重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
用time控件啊,获取threadstate后,按指定时间间隔规定向界面刷新,线程必须是全局变量
创新互联制作网站网页找三站合一网站制作公司,专注于网页设计,成都网站建设、成都网站设计,网站设计,企业网站搭建,网站开发,建网站业务,680元做网站,已为1000多家服务,创新互联网站建设将一如既往的为我们的客户提供最优质的网站建设、网络营销推广服务!
用一个有退出条件的无限循环的sub也行。
线程开始就触发该过程,用无限循环来刷新状态,线程完成即退出无限循环。局部变量的线程也可以用这种方式。
不过用法要正确,否则会出问题。
我给你一个简单的思路:
1,定义5个公共布尔变量,用来记录5个线程的执行情况
2,线程开始变量赋值假,执行完毕或者异常退出赋值真
3,一直用一个定时器扫描5个公共布尔变量----------随时知道状态
原因很简单
你是定义了一个T的新线程,但是很可惜你在BeginDoSub这个独立的线程中又定义了一个deSomeSub的委托,并且直接用Me.Invoke把实际的执行任务提交给界面主线程运行了
所以你的图片的处理函数实际上是在主线程中运行的,新线程等于没用
正确的作法是,T定义为SomeSub这个函数为入口的线程,并启动它
在界面进度条更改的时候再使用Invoke来调用委托来进行界面更改。
.net 为了安全,默认不允许跨线程访问操作控件。只能谁创建了控件,谁操作。
这个textbox只能从主线程访问。
解决方案一般有两个
1. 使用委托机制。委托创建线程去访问
2. 设置Me.CheckForIllegalCrossThreadCalls = False 表示不检测跨线程错误