只要告訴它要在背後執行哪個耗時的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 海角點部落
沒有留言:
張貼留言