我想我需要一些帮助来理解调度队列。了解调度队列
当新工作到达时,它将在调度程序队列的开始处添加,并且当分派器想要处理工作项时,它将从头开始移除。
更笼统地说:如果有工作,它会以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