.Net Task支持Task Cancellation,但我想传递取消的原因。在我的情况下,我的任务被取消了一些原因,并且任务必须以取消的每个原因完成不同的方式。
CancellationTokenSource类没有设置那个属性的属性。 如何将取消原因传递给任务?
答案 0 :(得分:0)
您无法将原因或讯息传递给Task
以表明原因。
取消Task
实例(或其他操作)的方式是传递CancellationToken
个可以检查/注册的实例,以确定操作是否已被取消(这是任务取消的“合作”方面)。
但是,CancellationToken
取消 <\ n> ,它们会受到通过调用各种CancellationTokenSource
创建它们的Cancel
method的影响过载。
此外,当任务被取消时,会抛出从OperationCancelledException
派生的异常,您可以捕获该异常。当你发现异常时,你可以看一下CancellationToken
property;这会暴露用于取消操作的CancellationToken
。
从那里,您可以将其传递给override of the Equals
method公开的CancellationToken
结构上的Token
property;如果对Equals
的调用返回true,则操作被CancellationTokenSource
取消,您可以将其与取消原因联系起来。
请注意,您可能必须深入研究AggregateException
中包含的异常,因为异步操作抛出的大多数异常都包含在其中。