BackgroundWorker控件简介
使用BackgroundWorker控件可以在后台单独的线程上执行操作,通常用于数据库操作、文件下载等相对耗时一般要求后台处理的任务。使用起来比较简单,如果需要后台处理的任务少的话,①在VS中可以直接从工具箱中拖一个BackgroundWorker到主界面中即可,自动命名backgroundWorker1。②或者手动声明初始化BackgroundWorker类新实例:BackgroundWorker bgw=new BackgroundWorker();
所属命名空间:System.ComponentModel
1、常用属性:
①CancellationPending:获取一个值,指示应用程序是否已经请求取消后台操作。如果应用程序已经请求取消后台操作,则为true;否则为false,默认为false。如果CancellationPending为true,则已对BackgroundWorker调用了CancelAsync方法。
②IsBusy:获取一个值,指示BackgroundWorker是否正在运行异步操作。如果BackgroundWorker正在运行异步操作,则为true;否则为false。调用RunWorkerAsync时,BackgroundWorker将启动异步操作。
③WorkerReportsProgress:获取或设置一个值,该值指示BackgroundWorker能否报告进度更新。若支持进度更新,则为true;否则为false,默认为false。当该属性为true时,用户代码可以调用ReportProgress方法来引发ProgressChanged事件。可在BackgroundWorker属性中设置,也可在代码中编写bgw.WorkerReportsProgress = true;
④WorkerSupportsCancellation:获取或设置一个值,该值指示BackgroundWorker是否支持异步取消。若支持取消,则为true,;否则为false,默认为false。当该属性为true时,可以调用CancelAsync方法中断后台操作。可在BackgroundWorker属性中设置,也可在代码中编写bgw.WorkerSupportsCancellation = true;
2、常用方法:
①CancelAsync():请求取消挂起的后台操作。CancelAsync 提交终止挂起的后台操作的请求,并将CancellationPending属性设置为true。
②Dispose():释放由Component使用的所有资源。
③OnDoWork(DoWorkEventArgs):引发DoWork事件。
④OnProgressChanged(ProgressChangedEventArgs):引发ProgressChanged事件。
⑤OnRunWorkerCompleted(RunWorkerCompletedEventArgs):引发RunWorkerCompleted事件。
⑥ReportProgress(Int32)、ReportProgress(Int32,Object):引发ProgressChanged事件。e.g:bgw.ReportProgress(percentProgress); 参数percentProgress表示已完成的后台操作所占的百分比,范围从0%到100%。
⑦RunWorkerAsync()、RunWorkerAsync(Object):开始执行后台操作。e.g:bgw.RunWorkerAsync(argument);参数argument表示要在DoWork事件处理程序中执行的后台操作使用的参数。
注意,所传入的参数最多为一个,若想传入多个参数,则将参数封装到一个类中,通过类的实例来传递;或者若传入的参数为同一类型,则可以将参数写进一个数组,通过传入数组来传递。
3、事件:
①Disposed:当通过调用Dispose方法释放组件时发生。
②DoWork:调用RunWorkerAsync时发生。在此事件中处理程序中调用耗时的操作。
③ProgressChanged:调用ReportProgress时发生。在此事件中处理收到进度更新的通知。
④RunWorkerCompleted:当后台操作已完成、被取消或引发异常时发生。在此事件中处理操作完成时收到的通知。
参考自MSDN,其他相关详细见MSDN:https://msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker(v=vs.110).aspx