代码之家  ›  专栏  ›  技术社区  ›  Peter

如何获取UI线程调度程序?

  •  49
  • Peter  · 技术社区  · 15 年前

    有什么方法可以得到用户界面线程的 Dispatcher 当您没有引用任何UI元素时?

    2 回复  |  直到 6 年前
        1
  •  91
  •   Abe Heidebrecht    15 年前

    您可以从静态应用程序实例中获取UI调度程序: Application.Current.Dispatcher

    你可能想查一下 Application.Current 因为它可以在关机过程中被清除。

        2
  •  0
  •   d219    6 年前

    在使用wpf的winforms应用程序中(在我的例子中是esri的arcmap.exe),以下对我来说效果更好。

    private System.Windows.Threading.Dispatcher Dispatcher { get; set; }
    
    // I put this in my view model constructor as it MUST be called from UI thread
    Dispatcher = System.Windows.Threading.Dispatcher.CurrentDispatcher;
    

    另一种方法(涉及调用 new System.Windows.Application() 填充 System.Windows.Application.Current )每次我打开一个新的WPF窗口,然后关闭它,都会给我带来问题。这不仅是无效的 system.windows.application.current当前 但是我不能再打开新的窗户 InitializeComponents() 方法,均失败,原因是:

    System.InvalidOperationException:'应用程序对象正在 关闭。”

    到目前为止,新的解决方案没有这些副作用。