我想我需要一些幫助來理解調度隊列。瞭解調度隊列
當新工作到達時,它將在調度程序隊列的開始處添加,並且當分派器想要處理工作項時,它將從頭開始移除。
更籠統地說:如果有工作,它會以FIFO方式存儲在隊列中,並在沒有剩餘工作的情況下進行處理。
MSDN文檔here指的是一個loop
和frame
:
The Dispatcher processes the work item queue in a loop. The loop is referred to as a frame.
但哪裏是在這種情況下一個循環?對我來說,一個循環就是對某個東西進行迭代的過程,當它到達終點時,它會重新開始。
什麼是frame
的概念?根據MSDN文檔,框架是隊列中工作項目的一個重要組成部分?如果這是真的,應該如何使用靜態方法Disptatcher.PushFrame()
?
而最有趣的問題是是否有任何方法來獲取隊列的當前狀態,特別是隊列中有多少物品。
如果之前調用的方法(以及因此放入Dispatcher隊列中)被執行後立即從隊列中移除或在另一段時間內持續存在,它會保留嗎?
我知道,:-)
第一個問題:爲什麼?爲什麼要使用Dispatcher?通常,分派器只是WPF過程的「消息泵」。它通過WPF UI處理應用程序代碼中的所有消息/事件/命令(例如,鼠標移動,點擊等)。當應用程序Run方法被調用時,它調用PushFrame來啓動該循環。你不能爲同一個線程啓動另一個;而分派器是爲了處理UI工作。 – 2012-07-10 18:23:31
您是否閱讀過[線程模型](http://msdn.microsoft.com/zh-cn/library/ms741870.aspx)? – 2012-07-10 18:24:45
這是生產者 - 消費者問題的標準解決方案:http://en.wikipedia.org/wiki/Producer-consumer_problem – 2012-07-10 18:26:02