如何解决DotNET中跨线程访问控件的问题
朱二(2008.10,转载请保留作者)
如果您对这篇小文感兴趣的话,或许您在编程中时候碰到过以下类似的异常提示:
1、线程间操作无效: 从不是创建控件“X”的线程访问它。(X是控件名称)
2、"在该控件上执行的操作正从错误的线程调用。使用 Control.Invoke 或 Control.BeginInvoke 封送到正确的线程才能执行此操
作。"
看到这种提示,极有可能是跨线程访问控件造成的。举个小例子,窗体FormA上有一位名叫TextBoxA的TextBox大哥。
代码如下:
- Private Sub FormA_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- Dim th As New System.Threading.Thread(AddressOf CrossThreadCallTest)
- th.Start()
- End Sub
- Public Sub CrossThreadCallTest()
- TextBoxA.Text =