从工作者线程调用UI线程讨论了很多次,我们知道为什么要使用BeginInvoke()而不是Invoke()。我最近发布了this question,在做了一些研究之后,我发现至少有三种不同的方式(在内部它们可能是相同的)在UI线程上调用(异步)某些东西。control.BeginInvoke()VS Dispatcher VS SynchronizationContext VS. - 可靠性
Control.BeginInvoke()
- 使用
SynchronizatoinContext
类 - 使用
Dispatcher.BeginInvoke(priority..)
谁能告诉我这是一个可靠的方法来异步调用要在UI线程执行的方法。任何经验?我看到Dispatcher.BeginInvoke具有优先组件,它是否更加可靠?
语境:
我们使用someControl.BeginInvoke()
,但注意到,有时候(可惜只有在最终用户生产环境)的委托传递给BeginInvoke is
永远不会执行这让我相信,它会创建到请求消息迷路。我们需要一种可靠的方式来回传给UI线程。 control.Invoke()
有时会挂起UI,因此我们不想去那里。
不要混淆WPF的WinForms。 – SLaks 2011-06-13 15:22:36
我遇到了类似的问题......您是否有机会纠正这个问题? – 2011-11-23 22:44:42
同样在这里,有没有更新? – Pedro77 2013-06-17 17:28:03