BackgroundWorker组件有一个CancelAsync方法,调用此方法将会导致BackgroundWorker组件的只读属性CancellationPending为True,然后在DoWork中判断即可。
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e){
BackgroundWorker bw = sender as BackgroundWorker;
if (bw.CancellationPending)//如果用户取消了操作
{
e.Cancel = true;//此结果将会传到RunWorkerCompleted事件中
return;//仍需要手动提交结束任务
}
//...
}
5、进度报告
BackgroundWorker组件有一个ProgressChanged事件。在DoWork事件处理代码中合适的地方调用BackgroundWorker组件的ReportProgress方法,就会激发ProgressChanged事件。ReportProgress除了可以报告进度,也可以通过其重载报告一个object对象,往往是描述信息。
在ProgressChanged事件中使用线程同步上下文做了特殊处理,可以直接访问窗体上控件,无需考虑跨线程问题。
四、等等好多东西以前都认真看过,没记性就忘了。马上要搬家了,装不进脑子里就带不走。每次搬家还要为几本书多付一些搬家费,惆怅。(没有大家电,书本就是最重的东西了)