C# 后台 worker 问题

标签 c# backgroundworker

我有一个后台工作人员,基本上执行以下操作:

  1. 查找下一个可用文件并将其标记为处理中
  2. 处理文件并将更新版本另存为新文件
  3. 将原件标记为已处理

如果有文件要处理,以上步骤需要循环继续处理。

我希望 Background Worker 能够停止,并且我看到了 WorkerSupportsCancellation 设置,但是如何确保它只能在文件之间停止,而不是在处理文件时停止?

最佳答案

WorkerSupportsCancellation 设置为 true,并定期检查 DoWork 事件处理程序中的 CancellationPending 属性。

CancelAsync 方法仅设置 CancellationPending 属性。它不会杀死线程;是否响应取消请求取决于工作人员。

例如:

private void myBackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
    while( !myBackgroundWorker.CancellationPending )
    {
        // Process another file
    }
}

关于C# 后台 worker 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6266851/

相关文章:

c# - 返回复杂对象或使用引用/输出参数是更好的做法吗?

performance - 仅在 I/O 负载较低时运行线程

c# - ASP.NET MVC 条件验证

c# - 为什么 case 语句不允许我设置将在方法内部使用的变量

ruby-on-rails - delayed_job、守护进程或其他用于重复后台作业的 gem

C# BackgroundWorker线程问题

VB.NET WinForms - 如何从BackgroundWorker的线程访问主线程的对象?

C#/Winform : Enter data into HTML page, 提交表单

c# - 在 GitHub 拉取请求上显示 C# 代码覆盖率?

c# - 什么是NullReferenceException,如何解决?