BackgroundWorker 主要用于多线程编程,如果某一操作需要时间过长,放在主线程会导致界面卡死,就可以用这个组件,它可以使用用户界面线程中引发的事件进行通信,它主要的属性、方法和事件有:
属性:
WorkerReportsProgress :指示BackgroundWorker 能否报告进度更新;
WorkerSupportsCancellation:指示 BackgroundWorker 是否支持异步取消;
CancellationPending:指示应用程序是否已请求取消后台操作;
IsBusy:指示 BackgroundWorker 是否正在运行异步操作;
方法:
RunWorkerAsync()和RunWorkerAsync(object argument) : 开始执行后台操作 ;
CancelAsync():请求取消挂起的后台操作;
ReportProgress(int percentProgress):报告当前进度,引发ProgressChanged 事件;
事件:
DoWorkEventHandler DoWork:调用 RunWorkerAsync方法以后激发此事件;
ProgressChangedEventHandler ProgressChanged: 调用ReportProgress方法以后激发此事件;
RunWorkerCompletedEventHandler RunWorkerCompleted:当后台操作已完成、被取消或引发异常时发生;
以下是从博文 C#使用BackgroundWorker组件经验 中一张有关它里面调用的截图:
有关BackgroundWorker的示例和详细信息,可以参考MSDN ,其中有它各个方法属性事件的介绍,还有两个Demo。