我想在WPF应用程序中获取当前的调度程序。我想要获取调度程序的代码位于.cs
类文件(常规C#类)中。
Application.Current.Dispatcher.Invoke()
和其他....Current.Dispatcher.Invoke()
不可用。
有没有办法这样做?
答案 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并通过这种抽象来访问它 - 它对于多线程场景来说更安全。