鉴于Invoke()
在执行委托之前阻塞调用线程,我想知道它是否比排队的委托具有任何优先级BeginInvoke()
,根据定义,这会推断出及时性不太重要?
有人知道吗?是的,我总是可以创建一个测试应用程序,但是我很懒 ;-)
鉴于Invoke()
在执行委托之前阻塞调用线程,我想知道它是否比排队的委托具有任何优先级BeginInvoke()
,根据定义,这会推断出及时性不太重要?
有人知道吗?是的,我总是可以创建一个测试应用程序,但是我很懒 ;-)
调用之间的唯一区别是 BeginInvoke 是异步的,而 Invoke() 是同步的(正如您所指出的)。据我所知,在 Dispatcher 队列中 Invoke 调用优先于 BeginInvoke(假设使用了相同的优先级),但为了明确地证明这一点,您可以启动该测试应用程序...... :)
Dispatcher.Invoke() 将 DispatcherPriority 作为其第一个参数。这是一个相对粗略的优先安排。否则,它的功能是 FIFO 队列,先到先得。这一切都说得通,优先级只有在调用队列被备份时才有意义。您要避免的情况。如果它以这种方式工作,一个相当讨厌的错误工厂,代码将根据机器速度和负载以不可预测的顺序执行。