在WPF中调用Control,C#

时间:2016-01-06 09:46:36

标签: c# wpf thread-safety invoke

大家好我正在将我的一个项目从windowsforms切换到WPF。到目前为止,我使用这段代码用另一个线程的数据调用我的GUI对象:

this.Invoke(new Action<NewDiagPacketArrivedEventArgs>(DoSomething), e);

如何在WPF中执行相同的操作?我发现了一些关于使用调度员的帖子,但我无法让它发挥作用。我想有一个简单的解决方案。如果你知道关于这个主题的任何指南,我将不胜感激。

由于

2 个答案:

答案 0 :(得分:5)

试试这个

this.Dispatcher.Invoke(()=>DoStuffOnGUIThread());

DoStuffInGUIThread()是包含要在UI线程上执行的代码的方法。

答案 1 :(得分:2)

在Winforms中,我们使用Control.Invoke来编组从其他线程到GUI线程的代码。 在WPF的Dispatcher.Invoke中,每个Dispatcher对象都有自己的Dispatcher,在那个队列中它将被封送。

Dispatcher.BeginInvoke(new Action(() =>
 {
     //Your code
 }));