目前我知道以下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.
获得调度员的建议做法是什么?
最佳答案 不要依赖于UI线程上的MEF组合.如果它现在适合你,你就是幸运的. MEF本质上也是延迟的,并且充满了Lazy,所以如果你碰巧在后台线程上意识到它,那么整个子图将在后台实现.
我会使用#1或#3(无论哪个,只有一个UI线程调度程序,无论你怎么做到这一点都没关系).