WorkerSupportCancellation"的意义是什么?在后台工作c#中

本文关键字:后台 工作 是什么 quot WorkerSupportCancellation | 更新日期: 2023-09-27 18:03:45

我猜默认的行为是,当我用后台工作器实现它时,用户可以取消长时间运行的进程。workersupportcancel的意义是什么?

  1. 如果我不使用这个workersupportcancel作为true,用户将无法取消?或者换句话说,是强制定义这个吗?

  2. 如果第一个问题的答案是"非强制性",那么为什么微软会提出这个功能?我看不出有什么好的理由阻止用户取消这个过程,这完全取决于他的选择。

有人能解释一下吗

WorkerSupportCancellation"的意义是什么?在后台工作c#中

是,必须设置为true才能允许异步取消。在将WorkerSupportsCancellation设置为false的BackgroundWorker上调用CancelAsync()将导致InvalidOperationException

参见:BackgroundWorker.CancelAsync()

我相信如果您试图取消它而没有设置它,它会抛出InvalidOperationException,所以它确实是强制性的。

我能看到这样设计的唯一原因,是为了写worker的人指示是否可以取消。并不是所有的BackgroundWorkers在逻辑上都可以取消,所以它使使用worker的人更容易看到是否有可能取消。

WorkerSupportCancellation必须设置为true才能支持异步取消。否则调用CancelAsync()会抛出一个InvalidOperationException。所以,对于你的问题:

  1. 是,这必须为真,用户才能取消。

  2. 根据应用程序的需求,您可能希望在后台执行任务,例如数据库查询,与文件系统交互等…这必须完成,也许不是由用户发起的。因此,在某些情况下,可能不需要异步取消,对于大多数用户发起的操作来说,取消是一个值得支持的好特性。

这里有一些关于WorkerSupportsCancellation &BackgroundWorkers .