最近我使用Control.BeginInvoke()
方法将方法调用放入队列中以便稍后在UI线程上调用。我也知道有Dispatcher.BeginInvoke()
方法。我阅读了一些常规资源(like this on CodeProject),但仍然怀疑Control.BeginInvoke()
的行为是否与Dispatcher.BeginInvoke()
不同。
我理解可以要求Control.Invoke()
和Dispatcher.Invoke()
之间存在类比问题。
答案 0 :(得分:1)
Control.BeginInvoke
存在于.NET早期(至少版本1.1)。如果你有一个控件并希望在其UI线程上运行某些东西(可能有several UI threads),这是非常自然的选择。但是,如果你想在UI线程上运行一些通用的东西并且没有合适的Control
那么hacky解决方案是创建一个Control
,它不会出现在UI中然后Invoke
就此而言。
在.NET 3(IIRC)中添加Dispatcher
来解决此问题。
简而言之:
Control
,可以使用Control.BeginInvoke
Dispatcher
(提前)并使用Dispatcher.BeginInvoke
Control.BeginInvoke
:)