C# BackgroundWorker 后台任务

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的常用成员参数的意思和注释。具体使用时,
可以根据实际需求来选择使用哪些成员参数。

相关推荐

  1. C# BackgroundWorker 后台任务

    2024-01-17 09:04:03       48 阅读
  2. iOS 后台任务总结

    2024-01-17 09:04:03       40 阅读
  3. WordPress任务计划异步执行(WordPress后台速度优化

    2024-01-17 09:04:03       62 阅读
  4. ASP.NET Core 增加后台定时托管任务

    2024-01-17 09:04:03       29 阅读
  5. 在Linux和Docker中使用nohup进行后台任务管理

    2024-01-17 09:04:03       43 阅读
  6. FreeRtos任务的挂起和恢复实验示例(后续

    2024-01-17 09:04:03       56 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-17 09:04:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-17 09:04:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-17 09:04:03       87 阅读
  4. Python语言-面向对象

    2024-01-17 09:04:03       96 阅读

热门阅读

  1. gRPC vs HTTP

    2024-01-17 09:04:03       57 阅读
  2. 【CSS3】渐变 阴影 遮罩

    2024-01-17 09:04:03       43 阅读
  3. Redisson 分布式限流器 RRateLimiter 的使用及原理

    2024-01-17 09:04:03       48 阅读
  4. Hive字符串函数讲解

    2024-01-17 09:04:03       59 阅读
  5. LeetCode第198题 - 打家劫舍

    2024-01-17 09:04:03       58 阅读
  6. 设计模式——策略模式

    2024-01-17 09:04:03       48 阅读