只要告訴它要在背後執行哪個耗時的function,然後呼叫RunWorkerAsync方法即可。
當function執行完成時,BackgroundWorker會引發RunWorkerCompleted事件,可在此事件撰寫處理完成的相關流程。
// 建立共用的BackgroundWorker物件 private BackgroundWorker bw = new BackgroundWorker();
範例如下
// 建立BackgroundWorker物件 bw = null; bw = new BackgroundWorker(); // 指定要非同步執行的function step0_DoWork() bw.DoWork += new DoWorkEventHandler(step0_DoWork); // 指定非同步function執行完後, 呼叫step0_RunWorkerCompleted() bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(step0_RunWorkerCompleted); // 開始非同步 if (bw.IsBusy != true) { bw.RunWorkerAsync(); } //... //在此可安排其他事項非同步繼續執行下去 //...// 要非同步執行的function void step0_DoWork(object sender, DoWorkEventArgs e) { ImportExcel(); } // 非同步執行完成後要執行的function void step0_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { showLog("完成匯入."); }
參考來源:.Net 海角點部落
沒有留言:
張貼留言