我有一个后台工作人员,基本上执行以下操作:
- 查找下一个可用文件并将其标记为处理中
- 处理文件并将更新版本另存为新文件
- 将原件标记为已处理
如果有文件要处理,以上步骤需要循环继续处理。
我希望 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/