![](/img/trans.png)
[英]How can I create Application-scope variable that can be set/get anywhere in the application? (WPF/MVVM)
[英]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.