我有一個關於調度程序和後臺工作線程的問題。我有一個系統,我異步處理HTTP請求。最終,ObservableCollection被綁定到WPF控件。調度員和工作線程
我一直在使用Dispatcher.CurrentDispatcher.CheckAccess()來代替Silverlight的Deployment.Current.Dispatcher.CheckAccess()來確定我是否在UI線程中。然而,看看Stack Overflow的文檔和其他問題,似乎WPF版本只是在需要時創建一個調度器。
當前系統在調度線程上使用CheckAccess來確定我們是否在UI線程上,然後將其傳遞給在工作線程中運行的處理程序。工作線程上的CheckAccess也返回true,大概是因爲它只創建了自己的Dispatcher。
移動到跨線程可觀察集合不是一個選項。另一個問題說我需要維護對UI線程調度程序的引用。有什麼方法可以使用線程命名空間中的Dispatcher類/其他類來確定我是否在UI線程中?或者我應該繼續使用調度線程的調度程序來運行處理程序,而不管調度線程是否是UI線程?
謝謝!
我想使用這個,但由於某種原因,我的項目中找不到應用程序類。我添加了對PresentationFramework的引用,但是編譯器仍然告訴我「Application」在命名空間「System.Windows」中不可用。我需要參考另一個程序集嗎?我正在使用C#類庫。 – sohum 2011-04-13 15:49:15