當我們的程式在處理極為耗時的運算時,為了不要讓UI停在那邊等待運算結果 可以使用thread , BackgroundWorker 來分擔UI thread 的工作量 一般來說首先需要註冊DoWork事件的event handle ... _BackgroundWorker.DoWork += backgroundWorker_StartToWork; ... private void backgroundWorker_StartToWork( object sender, DoWorkEventArgs e){ //statement } 但若想要輸出執行結果的話 可以在DoWork事件的 event handle 裡( backgroundWorker_StartToWork )更新 e.Result的值,並註冊 RunWorkerCompleted 事件的 envent handle, 再藉由它 取得 e.Result private void backgroundWorker_RunWorkerCompleted( object sender, RunWorkerCompletedEventArgs e) { //statement }