内容发布更新时间 : 2024/11/14 23:40:15星期一 下面是文章的全部内容请认真阅读。
个人 认为 多线程没什么复杂的
重要的在于参数传递
一个线程返回一个线程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)