1. BackgroundWorker 后台任务
C# BackgroundWorker是一个用于在后台执行耗时操作的组件。它可以在Windows窗体应用程序中使用,通过在BackgroundWorker实例上注册事件处理程序来执行耗时的运算。
// 创建BackgroundWorker对象
BackgroundWorker backgroundWorker1 = new BackgroundWorker();
// 设置支持报告进度和取消操作
backgroundWorker1.WorkerReportsProgress = true; // 是否支持报告进度
backgroundWorker1.WorkerSupportsCancellation = true; // 是否支持取消操作
// 注册DoWork事件,该事件中执行后台任务
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
// 注册ProgressChanged事件,该事件中更新进度
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
// 注册RunWorkerCompleted事件,该事件中处理任务完成后的操作
backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
// 启动后台任务
backgroundWorker1.RunWorkerAsync(50);
// 取消后台任务
backgroundWorker1.CancelAsync();
// 后台任务执行方法
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker bw = sender as BackgroundWorker;
for (int i = 0; i <= 100; i++)
{
if (bw.CancellationPending)
{
// 用户取消了操作
e.Cancel = true;
return;
}
// 报告进度
bw.ReportProgress(i, $"已经完成{i}%");
Thread.Sleep(Convert.ToInt32(e.Argument));
}
e.Result = "完成";
}
// 进度更新方法
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
// 更新进度
Console.WriteLine(e.UserState.ToString());
}
// 任务完成方法
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled)
{
// 任务被取消
Console.WriteLine("任务被取消");
}
else if (e.Error != null)
{
// 任务发生错误
Console.WriteLine("任务发生错误");
}
else
{
// 任务完成
Console.WriteLine("任务完成");
}
}
2. C# BackgroundWorker的各个成员参数的意思和注释
1. DoWork事件:
- 参数:sender - DoWorkEventArgs对象,包含事件的相关信息。
- 作用:在此事件中执行后台任务的代码。
2. RunWorkerCompleted事件:
- 参数:sender - 事件的发送者,即BackgroundWorker对象本身。
- 参数:e - RunWorkerCompletedEventArgs对象,包含事件的相关信息。
- 作用:在此事件中处理后台任务完成后的代码。
3. ProgressChanged事件:
- 参数:sender - 事件的发送者,即BackgroundWorker对象本身。
- 参数:e - ProgressChangedEventArgs对象,包含事件的相关信息。
- 作用:在此事件中处理后台任务进度的更新。
4. WorkerReportsProgress属性:
- 类型:bool
- 默认值:false
- 作用:指示BackgroundWorker是否支持报告进度。
5. WorkerSupportsCancellation属性:
- 类型:bool
- 默认值:false
- 作用:指示BackgroundWorker是否支持取消操作。
6. RunWorkerAsync方法:
- 参数:argument - 传递给DoWork事件的参数。
- 作用:开始执行后台任务。
7. CancelAsync方法:
- 作用:取消后台任务的执行。
8. CancellationPending属性:
- 类型:bool
- 默认值:false
- 作用:指示是否已请求取消后台任务的执行。
9. ReportProgress方法:
- 参数:percentProgress - 表示任务进度的百分比。
- 参数:userState - 传递给ProgressChanged事件的参数。
- 作用:报告后台任务的进度。
请注意,以上是BackgroundWorker的常用成员参数的意思和注释。具体使用时,
可以根据实际需求来选择使用哪些成员参数。