重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
使用api
创新互联长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为安吉企业提供专业的成都做网站、网站建设,安吉网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
Private Declare Function TerminateThread Lib "kernel32" (ByVal hThread As Long, ByVal dwExitCode As Long) As Long
多线程是用于处理复杂项目的
打个比方
你的主程序线程A中有个循环,由于代码是一行行走的,所以循环结束前下面的代码无法运行,而此时主界面的反应就类似卡死的样子,你点击按钮也没有反应,因为主线程在忙着循环呢,所以对按钮的事件代码要等待了,如果要避免这种情况,就要用到多线程,另开一个新线程专门用来执行循环代码,主界面就不会卡死了,只要在循环结束后将结果传回主线程调用就可以了,再复杂点要涉及到委托,控制了
按你的要求其实你的代码用不到多线程,只要把sleep放到两段代码中间就可以了。
新线程结束用thread.abort()
我给你一个简单的思路:
1,定义5个公共布尔变量,用来记录5个线程的执行情况
2,线程开始变量赋值假,执行完毕或者异常退出赋值真
3,一直用一个定时器扫描5个公共布尔变量----------随时知道状态
你可以在timer前用if判断网络状态,
如断开,可用
threading.Thread.Sleep(10000) ‘当前线程挂起10秒
’可以开一个新线程去读取脱机数据。
如连接,则继续执行。
补充:
dim i as integer
'超过100次退出,避免死循环
for i=0 to 100
try
'ping你的端口
if ‘ok
exit for
else
threading.Thread.Sleep(10000) ‘当前线程挂起10秒
end
Catch ex As Exception
End Try
next
如果需要等待T2线程结束,那又何必开启这个线程!!
直接:
Label1.Visible = True
setB()
MsgBox("d")
这不就是执行完setB(),再执行MsgBox("d"),多线程是多余的。
多线程的作用大多数也就用来同时执行多任务而不用等待的。
用time控件啊,获取threadstate后,按指定时间间隔规定向界面刷新,线程必须是全局变量
用一个有退出条件的无限循环的sub也行。
线程开始就触发该过程,用无限循环来刷新状态,线程完成即退出无限循环。局部变量的线程也可以用这种方式。
不过用法要正确,否则会出问题。