一般來說我們在寫一個程式的時候,為了讓UI的即時回應不會有Hang住 (Not Responding)情形,我們通常會為需要比較多時間、比較複雜運算的工作、需等待其他程式回覆(DB connection)…建立新的執行緒來處理,等到這個執行緒的內容做完再更新畫面,或在過程中顯示進度讓使用者知道。但這會牽扯到跨執行緒存取UI thread建立的controls的問題:
System.InvalidOperationException – Cross-thread operation not valid: Control ‘xxxxx’ accessed from a thread other than the thread it was created on.
所以在更新UI controls時便會透過3或4來呼叫UI thread來執更新的動作,一般都會用4的方法,因為原執行緒就可以繼續他的工作而不用等待UI thread執行結束。BackgroundWorker也因此而誕生(http://msdn.microsoft.com/en-us/ ... ckgroundworker.aspx)。
細節你可以Google一下或上MSDN查閱作者: hootcaption 時間: 2011-12-13 10:49 AM