2

我正在编写一些内部框架代码,并且在某些时候我想抛出一个MyCustomException何时TaskCanceledException发生,因为我想为CancellationToken消息添加配置的延迟。也就是说,在:

var cancellationTokenSource = new CancellationTokenSource();
cancellationTokenSource.CancelAfter(cancellationTokenDelay);
return cancellationTokenSource.Token;

我想获取传递给CancelAfter方法的值。问题是:CancellationToken似乎没有公开这些信息。有什么技巧可以得到吗?

(我已经考虑过用 a 来计时操作Stopwatch,但我正在寻找一个更优雅的替代方案)。

4

1 回答 1

4

并不是所有CancellationToken的都有延迟。将它们与 a 一起使用是很常见的,它CancellationTokenSource基于除了设定的时间流逝之外的其他东西调用取消。

您需要将该信息与取消令牌一起传递给任务,或者创建您自己的子类,CancellationToken该子类仅与延迟一起使用并公开该信息。

于 2013-07-01T19:47:43.787 回答