最近,我使用Control.BeginInvoke()方法将方法调用放入队列中,以便稍后在UI线程上调用。我也知道有Dispatcher.BeginInvoke()方法。我阅读了一些通用资源(就像在CodeProject上这样),仍然有一个问题:Control.BeginInvoke()的行为是否与Dispatcher.BeginInvoke()不同。
我知道类似的问题可以被问到Control.Invoke()和Dispatcher.Invoke()之间的区别。
发布于 2015-04-22 06:44:42
Control.BeginInvoke存在于.NET的早期(至少1.1版)。如果您有一个控件,并且希望在它的UI线程上运行一些东西(可以是几个UI线程),这是非常自然的。但是,如果您想在UI线程上运行一些通用的东西,并且没有一个适当的Control,那么恶意的解决方案就是创建一个Control,它不会出现在UI中,然后在UI上出现Invoke。
在.NET 3中加入了Dispatcher来解决这个问题。
简言之:
Control,可以使用Control.BeginInvokeDispatcher (提前)并使用Dispatcher.BeginInvokeControl.BeginInvoke :)https://stackoverflow.com/questions/29775965
复制相似问题