【发布时间】:2021-02-15 05:56:33
【问题描述】:
尽我所能查找此内容,但它没有任何意义..
我知道我们必须使用委托来更新主 UI 上的文本框。
简而言之,代码如下:
启动将捕获聊天的线程:
ChatQuery = New Thread(AddressOf FetchChats)
ChatQuery.Start()
FetchChats 代码简化:
SetTextBoxWithInvoke(Form5.TextBox2, MESSAGE)
SetTextBoxWithInvokeCode:
Private Sub SetTextBoxWithInvoke(ByVal TB As TextBox, ByVal msg As String)
If TB.InvokeRequired Then
TB.Invoke(New AddToMessageBoxDelegate(AddressOf SetTextBoxWithInvoke), New Object() {TB, msg})
Else
TB.Text &= msg
End If
End Sub
问题??永远不需要调用,并且新消息永远不会附加到我需要附加到的文本框中。
代表:
Public Delegate Sub AddToMessageBoxDelegate(ByVal TB As TextBox, ByVal msg As String)
【问题讨论】:
-
不再需要定义自己的委托。
Action和Func委托可用于分别调用Subs和Functions,参数为 0 到 16 个。在您的情况下,您将使用Action(Of TextBox, String)。 -
嗨,Jimmy,即使将代码从 Form1 移动到其本地 Form5 现在可以正常工作。我对你的方法很感兴趣。如何使用 Action 将此文本附加到我的 TextBox2?
-
您只需摆脱您的
AddToMessageBoxDelegate代表并改用Action(Of TextBox, String)。其他一切都一样。
标签: vb.net multithreading