目前我了解以下Dispatcher
个对象。
如果您有文字视图,则可以使用IWpfTextView.VisualElement.Dispatcher
。
如果您的类是由MEF构建的(标有[Export]
而不是直接由您自己的代码构造的),那么您可以使用MEF部分解析算法和构造在UI线程上发生的事实,允许使用Dispatcher.CurrentDispatcher
。例如:
[Export(typeof(ISomeInterface))]
public class MyClass : ISomeInterface {
private readonly Dispatcher _dispatcher;
public MyClass() {
_dispatcher = Dispatcher.CurrentDispatcher.
}
}
您可以使用任何代码中的Application.Current.Dispatcher
。
获取Dispatcher
的推荐做法是什么?
答案 0 :(得分:2)
不要依赖于UI线程上的MEF编写。如果它现在适合你,你就是幸运的。 MEF本质上也是延迟的,充满了懒惰,所以如果你碰巧在后台线程中意识到它,整个子图将在后台实现。
我会使用#1或#3(无论哪个,只有一个UI线程调度程序,无论你怎么做到这一点都无关紧要。)