首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

关于从其他线程更新主线程界面的有关问题

2012-03-07 
关于从其他线程更新主线程界面的问题PublicDelegateSubMyInvoke(ByValsAsString)PublicClassForm1PrivateS

关于从其他线程更新主线程界面的问题
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

热点排行