在Dispatcher的引擎盖下

时间:2013-09-16 10:15:40

标签: wpf

Aloha大家,

我对调度员几乎没有担心。

据我所知,Dispather是一个UI线程,因此当我使用Dispatcher.Invoke时,我让UI等到我的操作完成。

现在我的问题是,当我使用Async的BeginInvoke方法时,UI是否会等待?

Dispatcher的“正常”优先级是什么?这是否意味着它立即执行我的操作?

当我只调用没有DispatcherProprity的BeginInvoke时,默认属性将调度程序与我的操作相关联吗?

现在让我们将Normal优先级与BeginInvoke结合起来。调度员是否会立即执行我的操作,以及在引擎盖下发生了什么?

如果这个问题重复,我道歉。

1 个答案:

答案 0 :(得分:0)

根据MSDNDispatcher

  

提供管理线程工作项队列的服务。

所以在一个上调用Invoke 必然会立即生效...它只是将您的请求添加到队列中 - 这而不是意味着您的请求将立即执行。

DispatcherProprity值告诉Framework将请求放在队列中的位置。以高优先级调用Invoke将导致您的请求被置于高级别的队列中,只有之后具有相同优先级的任何其他请求。

关于BeginInvoke的来电,唯一真正的区别是

  

控件在调用后立即返回调用对象。

据我所知,其他一切包括优先权都是一样的。