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和判断的时候加锁
文章题目:vb.net多线程报错 vbnet多线程编程
网页链接:https://www.cdcxhl.com/article0/hgijio.html
成都网站建设公司_创新互联,为您提供关键词优化、网站排名、网站内链、网站制作、微信公众号、建站公司
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联