.Net Task 支持Task Cancellation,但我想传递取消的原因。在我的情况下,我的任务因某种原因被取消,并且任务必须以不同的方式完成每个取消原因。
CancellationTokenSource 类没有设置该原因的某些属性。如何将取消原因传递给Task?
.Net Task 支持Task Cancellation,但我想传递取消的原因。在我的情况下,我的任务因某种原因被取消,并且任务必须以不同的方式完成每个取消原因。
CancellationTokenSource 类没有设置该原因的某些属性。如何将取消原因传递给Task?
您不能将原因或消息传递给 aTask
以指示原因。
Task
取消实例(或其他操作)的方式是传递可以CancellationToken
检查/注册的实例以确定操作是否已取消(这是任务取消的“合作”方面)。
但是,取消不会受到 的影响CancellationToken
,它们会受到CancellationTokenSource
通过调用各种Cancel
方法重载来创建它们的影响。
此外,当任务被取消时,OperationCancelledException
会引发一个派生自的异常,您可以捕获该异常。当您捕获该异常时,您可以查看该CancellationToken
属性;这暴露了CancellationToken
用于取消操作的 。
从那里,您可以将其传递给该属性公开的结构上的方法的覆盖Equals
;如果调用返回 true,则操作被取消,您可以将其与取消原因相关联。CancellationToken
Token
Equals
CancellationTokenSource
请注意,您可能必须深入了解 中包含的异常AggregateException
,因为异步操作引发的大多数异常都包含在其中。