多线程在按键精灵中的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
个人认为多线程没什么复杂的
重要的在于参数传递
一个线程返回一个线程ID
如果你要想在子程序里面暂停他就得把线程的ID传递进去才能暂停
因为普通变量的参数传递不到线程中所以很多人就觉得在线程中无法暂停线程
比如
1.a=BeginThread(程序1)
2.b=BeginThread(程序2)
3.sub 程序1
4.
5.end sub
6.
7.sub 程序2
8.
9.end sub
复制代码
这是2个线程在线程中我们是无法暂停线程的只能在线程外暂停
因为他的线程ID是无法传递进线程中得所以没法暂停找不到目标这就是很多人不明白为什么线程中无法暂停线程的原因如果还不理解那么大家看看另一个
a=BeginThread(程序1)
b=BeginThread(程序2)
MessageBox a
sub 程序1
MessageBox a
end sub
sub 程序2
end sub
[/code]
这个线程多线程中会弹出2个窗口弹出的是第一个线程返回的值
弹出的2个值我们会发现不一样因为多线程中参数没有传递进去所以弹出的是空白
而另一个在线程外所以就值了
我们就会发现每个线程运行都会返回一个线程ID
因为线程返回的值存入的变量是普通变量无法传递进去所以在线程中我们暂停或者停止都是无效的但是我们把返回值定义成环境变量就能传递进去了
DimEnv a
a=BeginThread(程序1)
b=BeginThread(程序2)
MessageBox a
sub 程序1
MessageBox a
end sub
sub 程序2
//这里是我要运行的代码
end sub
[/code]
这样在线程中和线程外弹出的值就是一样的
那么我们就能随意停止线程了
不管你在哪个线程中暂停都会停止线程
这样一来多线程就很容易理解了
我们只需要搞清楚在多线程中运行的多线程主线程停止子线程是不会停止的
多线程中调用子程序会停止就可以了
那么什么三线程四线程 10线程都是浮云了
比如:
1.DimEnv a
2.DimEnv b
3.DimEnv c
4.a=BeginThread(程序1)
5.b=BeginThread(程序2)
6.
7.sub 程序1
8.StopThread a
9.c=BeginThread(程序3)
10.end sub
11.
12.sub 程序2
13.//这里是我要运行的代码
14.end sub
15.
16.sub 程序3
17.//当线程a停止时我不会停止我还会继续运行
18.end sub
复制代码
这样当线程a 停止的时候线程c是不会停止的他还会继续运行
1.DimEnv a
2.DimEnv b
3.DimEnv c
4.a=BeginThread(程序1)
5.b=BeginThread(程序2)
6.
7.sub 程序1
8.StopThread a
9.Call 程序3
10.end sub
11.
12.sub 程序2
13.//这里是我要运行的代码
14.end sub
15.
16.sub 程序3
17.//当线程a停止的时候我会停止啊
18.end sub
复制代码
我感觉多线程就是这样运行的
但我发现定义环境变量
DimEnv a,b
这样定义参数就传递进不去不知道是软件问题还是我理解错误