從工作者線程調用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