vb.net跨线程调用 跨线程操作winform控件

请教VB.net中怎么跨线程调用控件建立委托 。Me.Invoke——同步委托 或者 Me.BeginInvoke——异步委托 例:Me.Invoke(Sub Textbox.Text="这是一个示例" End Sub)
VB.NET 在线程里用textbox , 提示 线程间操作无效: 从不是创建控件“TextBox2”的线程访问它比如在一个窗体中的代码如下 , 在另一个线程中显示,隐藏窗口线程中的进度条:
Public Delegate Sub VoidDelegate() '定义委托类型
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim th1 As New System.Threading.Thread(AddressOf MyThreadProc) '声明线程
th1.Start() '启动线程运行 MyThreadProc过程
End Sub
Public Sub MyThreadProc()
Me.Invoke(New VoidDelegate(AddressOf StartProgress)) '这个是在另一个线程里调用StartProgress过程,并在创建窗口的那个线程里运行 。参数是委托类型 。me也可以改成控件名 。如果直接调用 StartProgress , 那该过程就在与MyThreadProc同一线程中运行,那么StartProgress过程中修改的控件不是在本线程创建的,就会出错 。
' 。。。。。。。。。
Me.Invoke(New VoidDelegate(AddressOf ShutProgress))
End Sub
Public Sub ShutProgress()
ProgressBar1.Visible = False
End Sub
Public Sub StartProgress()
ProgressBar1.Visible = True
End Sub
'不是还有个Process控件吗,好像也是用来多线程操作的,还没研究,
VB.NET多线程程序问题在多线程中你需要定义委托来修改控件属性
比如你修改Textbox属性 , 则:
Delegate Sub dl_ShowTextbox(ByVal iStr As String)
Public Sub ShowTextbox(ByVal iStr As String)
If Textbox.IsDisposed Then
Return
End If
If Textbox.InvokeRequired = True Then
Dim pInvoke As New dl_ShowTextbox(AddressOf ShowTextbox)
Me.Invoke(pInvoke, New Object() {iStr})
Else
Textbox.Text = iStr
End If
End Sub
在多线程中调用
ShowTextbox( "要显示的内容" )
【vb.net跨线程调用 跨线程操作winform控件】关于vb.net跨线程调用和跨线程操作winform控件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读