Winforms 跨线程调用与多个控件

Winforms 跨线程调用与多个控件,winforms,vb.net-2010,Winforms,Vb.net 2010,我有一个WinFormGUI,它有一个UDPClient侦听器线程在第二个平面上工作,以避免停止GUI;当线程接收到某个东西时,调用WinForm代码中的Sub;该子进程处理数据,并且必须根据接收到的数据填充不同的文本框 正如您所知,如果我试图更改子控件的任何控件的文本属性,我将收到一个跨线程错误。 所以为了避免这种情况,我做了一些代理来进行一些控制(只是一个测试),并且工作正常 但是WinForm有100多个控件,我想知道是否有一些方法可以用更少的代码来实现它 通过搜索,我发现了这两个问题

我有一个WinFormGUI,它有一个UDPClient侦听器线程在第二个平面上工作,以避免停止GUI;当线程接收到某个东西时,调用WinForm代码中的Sub;该子进程处理数据,并且必须根据接收到的数据填充不同的文本框

正如您所知,如果我试图更改子控件的任何控件的文本属性,我将收到一个跨线程错误。 所以为了避免这种情况,我做了一些代理来进行一些控制(只是一个测试),并且工作正常

但是WinForm有100多个控件,我想知道是否有一些方法可以用更少的代码来实现它

通过搜索,我发现了这两个问题

在第一个链接中,他们讨论使用Dispacher,类似于

Public Shared Sub UiInvoke(a As Action)
    Application.Current.Dispatcher.Invoke(a)
End Sub
我以自己的形式编写了代码,但IDE(VS2010/NET4.0)说“Current”不是成员

我想我遗漏了一些东西,我以前从未使用过,或者做过类似于Dispacher的事情,我通常使用委托

我做错了什么?还有另一种方法可以用一个委托控制多个控件吗?
我只需要读取或写入文本属性。

您可以使用匿名
Sub
s:

Me.Invoke(
分()
'此处更新控件
末端接头)

Start buy未使用application.current-可能有多个调度器。把司机放在窗户上。你是在说做类似的事情吗?”代码“公共共享子UiInvoke(ByVal a作为操作)调度程序。调用(a)结束子代码”是。有一天,您可能会发现代码具有多个UI线程,每个线程运行一个或多个窗口。这是很容易做到的,但它使应用程序级别的“当前”调度器的概念有点完全没有意义。您使用的是winforms还是WPF?你的问题完全不清楚。WPF解决方案在winforms中不起作用,顺便说一句,您最好不要使用winforma。@HighCore-我使用WinForm,我认为它是一样的,只是称为“不同”。我在一个私有的Sub Me.Invoke(Sub(),Me.UtcDateTxt.Text=“140505”)中编写了以下内容,VS IDE说“单行语句的Lambda表达式必须正好包含一条指令”;Sub()上的下划线@E_Blue,我不知道逗号是从哪里来的。请严格按照图中所示使用。对不起,我的错,我将单引号(')理解为coma;现在可以使用了,谢谢。