[英]What is difference between Control.BeginInvoke() and Dispatcher.BeginInvoke()?
最近,我使用Control.BeginInvoke()
方法将方法调用放入队列,以便稍后在UI线程上调用。 我也知道有Dispatcher.BeginInvoke()
方法。 我阅读了一些常规资源( 如在CodeProject上这样 ),但仍然有一个问题,即Control.BeginInvoke()
行为是否与Dispatcher.BeginInvoke()
不同。
我知道可以问类比问题,以获取Control.Invoke()
和Dispatcher.Invoke()
之间的区别。
Control.BeginInvoke
从.NET的早期版本开始存在(至少1.1版)。 如果您有一个控件并且想要在其UI线程上运行某些东西(可以有多个UI线程 ),那么这是非常自然的选择。 但是,如果您想在UI线程上运行常规操作,并且没有合适的Control
那么骇人的解决方案是创建一个不会出现在UI中的Control
,然后在该Control
上Invoke
。
在.NET 3(IIRC)中,添加了Dispatcher
以解决此问题。
简而言之:
Control
,则可以使用Control.BeginInvoke
Dispatcher
并使用Dispatcher.BeginInvoke
Control.BeginInvoke
:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.