我应该在Visual Studio 2010扩展中使用什么Dispatcher进行UI操作

目前我知道以下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线程调度程序,无论你怎么做到这一点都没关系).

点赞