如何将取消原因传递给.Net任务

时间:2013-01-24 10:31:31

标签: .net

.Net Task支持Task Cancellation,但我想传递取消的原因。在我的情况下,我的任务被取消了一些原因,并且任务必须以取消的每个原因完成不同的方式。

CancellationTokenSource类没有设置那个属性的属性。 如何将取消原因传递给任务?

1 个答案:

答案 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中包含的异常,因为异步操作抛出的大多数异常都包含在其中。