C# .NET从其他线程在主线程(UI)中执行函数

C# .NET从其他线程在主线程(UI)中执行函数,c#,wpf,dispatcher,C#,Wpf,Dispatcher,我的应用程序从主(UI)线程以外的线程中的h/w设备接收一些命令 从这个线程中,我想对UI Theraad执行一些操作。说一键点击!!!我正在使用 Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, new Action<Vote>(StartThisVote), presidentvote); Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority

我的应用程序从主(UI)线程以外的线程中的h/w设备接收一些命令

从这个线程中,我想对UI Theraad执行一些操作。说一键点击!!!我正在使用

Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, 
  new Action<Vote>(StartThisVote), presidentvote);
Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal,
新行动(开始本次投票),主席投票;

但这并不奏效。请让我知道谁可以从这个后台线程在主线程(UI)中执行命令

从后台线程中,将为空。您需要使用与要修改的UI关联的dispatcher。如果不能从线程代码访问控件本身,则可以在启动线程时直接将调度程序传递进来。(假设您在启动次线程时处于UI线程上。)

如注释中所述,假设您只有一个dispatcher(很可能),您可以使用
Application.Current.dispatcher
在任何地方访问它。(通过这种静态方法进行测试比较困难,但编写代码很容易…)


或者,如果您使用的是C#5和.NET 4.5,我建议您研究异步方法,这会使很多事情变得更简单。

您所说的“这不起作用…”是什么意思?您还应该能够通过
应用程序.Current.Dispatcher
访问Dispatcher。
Dispatcher.CurrentDispatcher.Invoke(DispatcherPriority.Normal, 
  new Action<Vote>(StartThisVote), presidentvote);