我有一个Winform GUI,它在第二个平面上有一个UDPClient监听器线程,以避免停止GUI;当线程收到一些东西时,调用WinForm代码中的Sub; Sub处理数据,必须根据收到的数据填充不同的TextBox。
如果您知道如果我尝试从Sub更改任何控件的text属性,我将收到Cross Thread错误。 所以为了避免我为一些控件做一些代表(只是一个测试)并且工作正常。
但WinForm有超过100个控件,我想知道是否有一些方法可以用更少的代码来完成它。
进行搜索我发现了这两个问题。
Multi-threaded WPF Application: Dispatcher Invoke. A more efficient way?
Change WPF controls from a non-main thread using Dispatcher.Invoke
在第一个链接上他们谈论使用Dispacher,比如
Public Shared Sub UiInvoke(a As Action)
Application.Current.Dispatcher.Invoke(a)
End Sub
我在我的表单中编写了该代码,但IDE(VS2010 / NET4.0)表示" Current"不是会员。
我想我错过了一些东西,我之前从未使用过或做过与Dispacher类似的事情,我通常会使用代表。
我做错了什么?有一个代表控制许多控件的另一种方法是什么? 我只需要读取或写入文本属性。
答案 0 :(得分:1)
您可以使用匿名Sub
s:
Me.Invoke(
Sub()
' Update controls here
End Sub)