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
原文:http://www.cnblogs.com/ggd3731/p/5160877.html