我不完全清楚應用程序中有多少個調度程序,以及它們與線程的關係或引用方式。根據我的理解,WPF應用程序有2個線程(一個用於輸入,另一個用於UI)和一個調度程序(與UI線程相關聯)。如果我創建另一個線程 - 讓我們稱之爲「工作線程」 - 當我在工作線程上調用Dispatcher.CurrentDispatcher
時,我將獲得哪個調度程序?調度程序到WPF中的線程關係
另一種情況: 假設一個包含2個線程的控制檯應用程序 - 主線程和輸入線程。在主線程,我首先創建輸入線程,然後我打電話Application.Run()
Thread thread = new Thread(new ThreadStart(UserInputThreadFunction));
thread.Start();
Application.Run();
將有一個調度員,對不對?在輸入線程上,Dispatcher.CurrentDispatcher是否返回主線程的調度程序?或者,讓主線程的調度程序獲得實例的正確方法是什麼?
難道是在WPF應用程序中有多個調度程序嗎?有沒有什麼情況下,創建另一個調度員是有道理的?
那麼,是否有運行循環運行的每個線程?由於性能原因,我很難想象這一點。 – j00hi 2011-02-16 11:22:54
調度程序是按需創建的,即當您調用Dispatcher.CurrentDispatcher時,如果調度程序尚不存在,則會創建調度程序。 – 2011-02-16 11:45:38
因此,當我在一個工作線程上調用Dispatcher.CurrentDispatcher(並創建工作線程的調度程序)並且訂閱該工作線程上的事件時,是否必須調用Dispatcher.Run()才能接收這些事件? – j00hi 2011-02-17 22:54:49