3

鉴于Invoke()在执行委托之前阻塞调用线程,我想知道它是否比排队的委托具有任何优先级BeginInvoke(),根据定义,这会推断出及时性不太重要?

有人知道吗?是的,我总是可以创建一个测试应用程序,但是我很懒 ;-)

4

2 回答 2

2

调用之间的唯一区别是 BeginInvoke 是异步的,而 Invoke() 是同步的(正如您所指出的)。据我所知,在 Dispatcher 队列中 Invoke 调用优先于 BeginInvoke(假设使用了相同的优先级),但为了明确地证明这一点,您可以启动该测试应用程序...... :)

于 2012-04-17T12:58:28.997 回答
2

Dispatcher.Invoke() 将 DispatcherPriority 作为其第一个参数。这是一个相对粗略的优先安排。否则,它的功能是 FIFO 队列,先到先得。这一切都说得通,优先级只有在调用队列被备份时才有意义。您要避免的情况。如果它以这种方式工作,一个相当讨厌的错误工厂,代码将根据机器速度和负载以不可预测的顺序执行。

于 2012-04-17T13:13:07.143 回答