C# BackgroundWorker使用教程

2020-01-05 09:33:58丽君

用法:


for (int i = 0; i <= 100; i++)
{
 //向ProgressChanged报告进度
 bgWorker.ReportProgress(i,"Working");
 System.Threading.Thread.Sleep(10);
}

CancelAsync()

请求取消当前正在执行的异步操作。调用该方法将使BackgroundWorker.CancellationPending属性设置为True。 
但需要注意的是,并非每次调用CancelAsync()都能确保异步操作,CancelAsync()通常不适用于取消一个紧密执行的操作,更适用于在循环体中执行。 

用法:


//在需要执行取消操作的地方键入以下代码
bgWorker.CancelAsync(); 

3、事件:

DoWork

用于承载异步操作。当调用BackgroundWorker.RunWorkerAsync()时触发。 
需要注意的是,由于DoWork事件内部的代码运行在非UI线程之上,所以在DoWork事件内部应避免于用户界面交互,而于用户界面交互的操作应放置在ProgressChanged和RunWorkerCompleted事件中。

ProgressChanged

当调用BackgroundWorker.ReportProgress(int percentProgress)方式时触发该事件。 
该事件的ProgressChangedEventArgs.ProgressPercentage属性可以接收来自ReportProgress方法传递的percentProgress参数值,ProgressChangedEventArgs.UserState属性可以接收来自ReportProgress方法传递的userState参数。

RunWorkerCompleted

异步操作完成或取消时执行的操作,当调用DoWork事件执行完成时触发。