安全背景執行緒 BackgroundWorker

張貼日期:2011/2/15 上午 02:14:44

屬性:

WorkerReportsProgress 用來支援回應進度.改為true

WorkerSupportsCancellation 用來支援取消行為.改為true

行為:

RunWorkerAsync() 用來啟動此元件

CancelAsync() 用來停止元件.

會傳給執行中的函式一個停止信號.但該函式必須要寫接收信號的內容.否則無法停止.最好每個有迴圈的地方都寫.

if( bk.CancellationPending ) { //這裡判斷一下是否用戶要求取消後台進行,並可以儘早退出。

return false;

}

//基本背景函式的寫法.必須回傳佈林值.f失敗.t成功

private bool line_high( BackgroundWorker bk ) {

if( bk.CancellationPending ) { //這裡判斷一下是否用戶要求取消後台進行,並可以儘早退出。

return false;

}

}

事件:

DoWork 用來指定要處理的背景程式.重要!!

private void bkw_DoWork( object sender , System.ComponentModel.DoWorkEventArgs e ) {

switch( gb.ls_out_type ) { //內部使用swich指定要動作的函式.

case "圖表海拔":

line_high( bkw );

break;

case "台灣分佈點":

do_point( bkw );

break;

case "圖表濕度":

break;//

case "台灣網格20公里":

break;

default:

break;

}

}

ProgressChanged 當進度回報動作產生時引發.如有要更新進度.可在此動作

RunWorkerCompleted 當DoWork完成後引發.