backgroundworker是基於事件非同步模式的乙個實現。它具有以下特徵:
可協調的退出
安全的更新窗體控制項
**異常到完成事件
報告進度
是乙個控制項,可以在visual studio中直接拖拽使用
主要有3個事件,注意事件發生的時間
dowork
呼叫 runworkerasync 時發生。
progresschanged
呼叫 reportprogress 時發生。
runworkercompleted
當後台操作已完成、被取消或引發異常時發生。
當需要實現進度報告和取消操作時,務必設定下面兩個屬性
backgroundworker1.workerreportsprogress = true;
backgroundworker1.workersupportscancellation = true;
具體**如下:
private
void form3_load(object sender, eventargs e)
private
void backgroundworker1_dowork(object sender, doworkeventargs e)
if (i > 78)
throw
newexception("error"); //丟擲的異常會在completed事件中捕獲
//dothing(); //無論間接還是直接呼叫windowsui控制項,在除錯狀態時會引發異常,但是在執行時卻不引發異常。
thread.sleep(100);
backgroundworker1.reportprogress(i);//更新狀態。
}
}
private
void backgroundworker1_progresschanged(object sender, progresschangedeventargs e)
private
void backgroundworker1_runworkercompleted(object sender, runworkercompletedeventargs e)
private
void btnstart_click(object sender, eventargs e)
private
void btncancel_click(object sender, eventargs e)
private
void dothing()
BackgroundWorker控制項使用方法
在使用之前先了解一些知識。1 backgroundworker 作用 主要用在單獨的執行緒上執行操作。backgroundworker ui 似乎處於停止響應狀態。如果您需要能進行響應的使用者介面,而且面臨與這類操作相關的長時間延遲,則可以使用 backgroundworker類方便地解決問題。2 ...
使用BackgroundWorker解決視窗卡死
使用控制項 backgroundworker 的實質是為該程序新建立乙個執行緒來執行耗時操作。bool changed false private void tabcontrol1 selected object sender,tabcontroleventargs e private void b...
BackgroundWorker控制項使用(一)
backgroundworker控制項簡介 所屬命名空間 system.componentmodel 1 常用屬性 cancellationpending 獲取乙個值,指示應用程式是否已經請求取消後台操作。如果應用程式已經請求取消後台操作,則為true 否則為false,預設為false。如果can...