关于从其他线程更新主线程界面的问题
Public Delegate Sub MyInvoke(ByVal s As String)
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim t As New Test
Dim myThread As New Threading.Thread(AddressOf t.DoWork)
myThread.Start()
End Sub
Public Sub ChangUI(ByVal s As String)
'实际运行后,MsgBox( "test ")能弹出,Textbox1没有更新
MsgBox( "test ")
TextBox1.Text += s + vbCrLf
End Sub
End Class
Public Class Test
Public Sub DoWork()
Dim mi As MyInvoke = New MyInvoke(AddressOf Form1.ChangUI)
mi.Invoke( "更新UI ")
End Sub
End Class
大家帮忙看下,ChangUI中的MSGBOX弹出了,但是Textbox1没有更新,为什么呢?
[解决办法]
Public Sub ChangUI(ByVal s As String)
if this.InvokeRequired then
Dim mi As MyInvoke = New MyInvoke(AddressOf Form1.ChangUI)
this.Invoke(mi, new object[]{ "更新UI "})
else
TextBox1.Text += s + vbCrLf
endif
End Sub
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
最新版本:20070210
http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
[解决办法]
有心无力,我也想我这样的问题
[解决办法]
http://blog.csdn.net/chendazhi/archive/2006/05/09/715064.aspx