- 若要在后台执行耗时的操作,需要创建一个BackgroundWork,侦听那些报告 操作进度并且在操作完成时发出的事件
- 若要为后台操作做好准备,要添加DoWork事件的事件处理程序,在此事件处理程序中调用耗时的操作
- 若要开始此操作,调用RunWorkerAsync事件
- 若要收到进度更新的通知:处理ProgressChanged事件
- 若要在操作完成时收到通知,处理RunWorkerCompleted事件
- BackgroundWorker bw = new BackgroundWork();//创建后台任务
- bw.DoWork += new DoWorkEventHandler(bw_DoWork);//bw_DoWork将执行一些耗时的操作
- bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);//操作完成后执行的事情
- bw.RunWorkerAsync();//传入后台任务的参数(在工作时传入)
- bw.RunWorkerAsync("111111");
- bW_ProgessChanged(object sender, ProgressChangedEventArgs e){}
- bW.ReportProgress(i, "222222")
- //向bW_ProgessChanged事件传递参数,第一个是进度的参数,第二个是你要处理业务的参数
- bw.CancelAsync(); // 中途取消后台任务
- WorkerSupportsCancellation 的值要设置为 true
- 取消后bW.CancellationPending==true
- void bw_DoWork(object sender,DoWorkEventArgs e){ // 耗时的操作}
- WorkerReportsProgress=true;//开启后台任务进度
- 调用BackgroundWorker的ReportProgress()方法,传递操作完成的进度值.
- 同时,进度改变将会触发ProgressChanged事件
- 在此事件中 e.ProgressPercentage 表示进度值
- bgWorker_WorkerCompleted(object sender, RunWorkerCompletedEventArgs e){if (!e.Cancelled)
this.label1.Text = "处理完毕!";
else
this.label1.Text = "处理终止!";}- 处理线程暂停或者终止时的提示