WorkerSupportCancellation"的意义是什么?在后台工作c#中
本文关键字:后台 工作 是什么 quot WorkerSupportCancellation | 更新日期: 2023-09-27 18:03:45
我猜默认的行为是,当我用后台工作器实现它时,用户可以取消长时间运行的进程。workersupportcancel的意义是什么?
-
如果我不使用这个workersupportcancel作为true,用户将无法取消?或者换句话说,是强制定义这个吗?
-
如果第一个问题的答案是"非强制性",那么为什么微软会提出这个功能?我看不出有什么好的理由阻止用户取消这个过程,这完全取决于他的选择。
有人能解释一下吗
是,必须设置为true
才能允许异步取消。在将WorkerSupportsCancellation
设置为false
的BackgroundWorker上调用CancelAsync()
将导致InvalidOperationException
。
参见:BackgroundWorker.CancelAsync()
我相信如果您试图取消它而没有设置它,它会抛出InvalidOperationException
,所以它确实是强制性的。
我能看到这样设计的唯一原因,是为了写worker的人指示是否可以取消。并不是所有的BackgroundWorkers
在逻辑上都可以取消,所以它使使用worker的人更容易看到是否有可能取消。
WorkerSupportCancellation
必须设置为true才能支持异步取消。否则调用CancelAsync()
会抛出一个InvalidOperationException
。所以,对于你的问题:
-
是,这必须为真,用户才能取消。
-
根据应用程序的需求,您可能希望在后台执行任务,例如数据库查询,与文件系统交互等…这必须完成,也许不是由用户发起的。因此,在某些情况下,可能不需要异步取消,对于大多数用户发起的操作来说,取消是一个值得支持的好特性。
这里有一些关于WorkerSupportsCancellation &BackgroundWorkers .