調度程序線程如何在wpf UI控件中工作?調度程序線程如何在wpf UI控件中工作
回答
編輯。
如果您有一個長時間運行的任務,請使用BackGroundWorker將其委託給後臺線程,然後您將不需要使用調度程序將消息傳遞迴UI。 This is a very good article.
它是一個非常寬泛的問題。我建議你從WPF Architecture開始。
在WPF中的大部分對象由 DispatcherObject的,它提供了 基本構造爲處理 併發線程和派生。基於由調度員實現的消息系統 ,WPF是 。這個 的工作方式非常類似於熟悉的Win32 消息泵;實際上,WPF 調度程序使用User32消息執行交叉線程調用 。
實際上有兩個核心概念,以 在WPF討論併發 當明白 - 調度和線程 親和力。
在WPF的設計階段, 目標是移動到 執行一個線程,而是一個非線程 「affinitized」的模式。線程親和力 發生在組件使用執行線程的 身份到 時存儲某種類型的狀態。最常見的 這種常見形式是使用 線程本地存儲(TLS)來存儲 狀態。線程親和力要求每個邏輯執行線程 僅由 中的一個物理線程擁有,該操作系統可能會變爲 內存密集型。最後,WPF的 線程模型與 保持同步,現有的User32線程模型 單線程執行與線程 親和力。此 的主要原因是互操作性 - OLE 2.0,剪貼板和Internet Explorer等系統都需要單線程 親和性(STA)執行。
既然你有STA線程 對象,你需要一種方法來 線程之間的溝通, 驗證你是正確的 線程。這裏就是 調度員的角色。調度員是一個基本的 消息調度系統,其中 多個優先隊列。消息的示例 包括原始輸入 通知(鼠標移動),框架 函數(佈局)或用戶命令 (執行此方法)。通過從DispatcherObject派生 ,您將創建一個具有STA行爲的 CLR對象,並且 將在創建時獲得指向 調度員的指針。
嗯..我懷疑是當一個長時間運行的過程發生在用戶界面後面,那時候WPF UI將不會響應或使用調度程序線程它可以解決嗎? – 2009-09-04 10:35:19
- 1. WPF調度程序線程
- 2. 如何使用wpf調度程序創建多UI線程winforms應用程序
- 3. WPF調度程序/線程問題
- 4. wpf線程,backgroundworker,調度程序
- 5. WPF ObservableList調度程序線程
- 6. 調度程序線程和UI呈現WPF窗體處於最小化狀態時的線程工作
- 7. C#WPF從工作線程更新UI
- 8. Akka調度程序:akka調度程序如何工作?
- 9. 多線程UI導致WPF應用程序停止工作
- 10. 作業調度程序UI小部件?
- 11. 如何在UI線程中工作時更新進度條
- 12. 如何在工作線程中從UI線程獲取變量?
- 13. Android中的UI線程如何工作?
- 14. 從工作線程調用更新UI線程是如何工作的?
- 15. 我可以更改WPF中控件的線程相關性(調度程序)嗎?
- 16. 如何在工作線程中調用UI線程上的方法?
- 17. 如何獲取UI線程調度程序?
- 18. 如何從其他appdomain獲取UI線程調度程序?
- 19. 調度程序到WPF中的線程關係
- 20. 使用任務vs調度程序進行UI線程操作
- 21. 線程調度程序在WPF中睡眠
- 22. 石英調度程序如何工作?
- 23. 從Metro App中的工作線程調用UI線程
- 24. 如何從線程更新WPF應用程序中的UI?
- 25. 如何從工作線程更新UI線程中的視圖
- 26. Kendo UI調度程序中的Kendo UI調度程序,議程視圖列
- 27. 調度程序的工作
- 28. 調度程序控件
- 29. 線程安全調用WPF控件
- 30. 使用工作線程和UI線程
請評論投票下來。 – 2009-09-04 10:30:48
請在你的問題上更精確一點。 – 2009-09-04 10:47:57