2014-09-29 25 views
0

這是參考我正在開發的winforms應用程序。我對Invoke有點困惑。爲什麼使用Invoke時,我可以寫內聯代碼?

我知道beginInvoke是異步的,調用是同步的。 beginInvoke是有意義的,如果你想讓一段代碼工作異步並讓UI響應,但爲什麼我要在進程同步的時候使用Invoke?我可以通過在線編寫代碼來獲得相同的結果嗎?

+1

只有您的代碼已經在UI線程上運行。如果它運行在其他線程上,那麼'Invoke'就是將這個調用集中到UI線程上的一種方式,這非常有用。 – Cameron 2014-09-29 21:06:48

+0

調用編組調用正確的線程,但阻止調用一個(對於您的後臺線程)。 – 2014-09-29 21:37:08

回答

5

不,不完全是。 Invoke也確保代碼在的正確線程中運行

它的主要用途是從後臺線程調用Invoke並讓代碼在UI線程上運行。

2

Invoke通常使用在這種情況下:

Control.Invoke(...); 

哪裏Control實際上是一個控制。這裏重要的是執行發生在UI線程上。

查看MSDN瞭解更多信息。

+0

感謝BradleyDotNET。 – user4032346 2014-09-30 01:39:59

相關問題