如何在WPF应用程序中的任何位置获取调度程序

时间:2014-02-13 13:10:49

标签: c# wpf dispatcher

我想在WPF应用程序中获取当前的调度程序。我想要获取调度程序的代码位于.cs类文件(常规C#类)中。 Application.Current.Dispatcher.Invoke()和其他....Current.Dispatcher.Invoke()不可用。

有没有办法这样做?

3 个答案:

答案 0 :(得分:3)

为什么类Application.Current.Dispatcher不可用?您是否参考了PresentationFramework程序集?

答案 1 :(得分:0)

您可以从窗口或当前窗口获取Dispatcher ..

Application.Current.MainWindow.Dispatcher.Invoke() 

答案 2 :(得分:0)

我认为System.Windows.Threading.Dispatcher.CurrentDispatcher应该完成这项工作,但你应该知道你将收到的Dispatcher取决于你调用此方法的线程。在这里你可以看到非常好的解释,两者之间的确切区别是什么 - Dispatcher.CurrentDispatcher vs. Application.Current.Dispatcher

  

我的直觉告诉我,Application.Current.Dispatcher将永远不会更改并且对当前应用程序中的所有线程都是全局的,而Dispatcher.CurrentDispatcher可能会根据调用它的线程创建Dispatcher的新实例。

这就是为什么我建议你找到一种方法来抽象Application.Current.Dispatcher或某些视图的Dispatcher并通过这种抽象来访问它 - 它对于多线程场景来说更安全。