.net 多线程
2016-01-26 16:41 后悔药 阅读(108) 评论(0) 收藏 举报Dim TargetName As String = Hashtotext(getcrc32(".\abc.txt"))
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Me.Label1.Text = TargetName
End Sub
到了Label1赋值的时候,VS2010说:线程间操作无效: 从不是创建控件“Label1”的线程访问它。怎么解决?
回答:
通过Label1的Invoke方法在创建Label1的线程上改变Label1.Text属性
在Sub BackgroundWorker1_DoWork 中调用Label1.Invoke:
Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Label1.Invoke(Sub() Label1.Text = TargetName)
End Sub
Control.Invoke 方法:http://msdn.microsoft.com/zh-cn/library/zyzhdc6b.aspx
浙公网安备 33010602011771号