从品牌网站建设到网络营销策划,从策略到执行的一站式服务
thread = New System.Threading.Thread(AddressOf DoStuff)thread.Start()Private Sub DoStuff() 'error occurs here' Me.Text = "Stuff"End Sub
我们提供的服务有:网站建设、网站制作、微信公众号开发、网站优化、网站认证、肃州ssl等。为1000多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的肃州网站制作公司
方案1:
Private Sub DoStuff() Me.CheckForIllegalCrossThreadCalls = False Me.Text = "Stuff"End Sub
方案二thread = New System.Threading.Thread(AddressOf DoStuff)thread.Start()Private Delegate Sub DoStuffDelegate()Private Sub DoStuff() If Me.InvokeRequired Then Me.Invoke(New DoStuffDelegate(AddressOf DoStuff)) Else Me.Text = "Stuff" End IfEnd Sub
用
t.Suspend() 这个是挂起线程。是一个异步方法。
t.Sleep 我看了是一个同步方法。要等这个方法运行完了才继续下一步。
这和from.show和 from.showdiaglog区别差不多!
至于疑问2我也没找到原因。
t1 = New Threading.Thread(AddressOf sDownFile) 你这句都没代入参数啊。
改成这样试试 t1 = New Threading.Thread(AddressOf sDownFile(参数1,参数2))
楼上回答不对,这个问题很常见,就是在线程中使用到了控件,在这种状况下,不能直接操作控件属性,而只能通过委托的方法去实现
.net 为了安全,默认不允许跨线程访问操作控件。只能谁创建了控件,谁操作。
这个textbox只能从主线程访问。
解决方案一般有两个
1. 使用委托机制。委托创建线程去访问
2. 设置Me.CheckForIllegalCrossThreadCalls = False 表示不检测跨线程错误
还是并发加锁,你判断时候,上一个线程还未执行_datalist.RemoveAt(0),所0,然后就会出错了,你最好先 Remove到一个变量里,然后执行发送,在Remove和判断的时候加锁
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图