簡體   English   中英

如何在WPF應用程序中的任何地方獲取調度程序

[英]How to get dispatcher anywhere in WPF application

我想在WPF應用程序中獲取當前的調度程序。 我要獲取調度程序的代碼在.cs類文件(常規C#類)中。 Application.Current.Dispatcher.Invoke()和其他....Current.Dispatcher.Invoke()不可用。

有什么辦法嗎?

為什么類Application.Current.Dispatcher不可用? 您是否引用過PresentationFramework程序集?

您可以從窗口或當前窗口獲取分派器。

Application.Current.MainWindow.Dispatcher.Invoke() 

我認為System.Windows.Threading.Dispatcher.CurrentDispatcher應該可以完成這項工作,但是您應該知道,將收到的Dispatcher取決於您從中調用此方法的線程。 在這里您可以看到很好的解釋,兩者之間的確切區別是-Dispatcher.CurrentDispatcher與Application.Current.Dispatcher

我的直覺告訴我Application.Current.Dispatcher永遠不會改變,並且對於當前應用程序中的所有線程都是全局的,而Dispatcher.CurrentDispatcher可能會根據調用它的線程來創建Dispatcher的新實例。

這就是為什么我建議您找到一種抽象Application.Current.Dispatcher或某個視圖的Dispatcher並通過這種抽象訪問它的方法-對於多線程方案而言,這才更安全。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM