首先先感謝toki大的解說,他講的是control.BeginInvoke的觀念
後來我自己又看了一下兩者的差別
當你的其他thread (不是UI thread)要對UI thread的控制項做改變
就必須呼叫control.BeginInvoke來做
而delegate.BeginInvoke在我的理解看來
當你為了做某件事且同時顯示某些狀態在視窗上,
若你用ui thread來做,那麼運算的過程式不能同時顯示的,因為他還在算東西
必須等到運算完,才能做出顯示,這樣失去我們原本設計這視窗程式意義
所以用delegate.BeginInvoke來呼叫要運算的function
呼叫後他會開一個thread來做這件事,所以ui thread不會被佔用
這樣就可以更新UI畫面了
而上一篇MSDN的例子,他是先呼叫了delegate.BeginInvoke來處理運算
運算過程中 運算進度會不斷增加 並且想把進度顯示在progressbar上
而這更新progressbar並顯示就是UI thread要做的,
而進度只有運算的那個function知道自己算到哪了 他在另一個thread上
這時就接到toki大講的了
我想大概就是這樣吧
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.101.28