具有延迟/超时的CancellationTokensource-区分之后发生的情况



在初始化设置了延迟值的CancellationTokenSource时,是否可以在之后检查到底发生了什么——是否达到了超时时间,或者是否明确调用了.Cancel(..)?

现在,延迟之后发生的OperationCanceledException似乎没有这样的指示符,但也许我不知何故错过了它。

解决这一问题的一种方法是有两个单独的CancellationTokenSource:一个用于延迟,一个用于手动取消。然后,您可以使用CancellationTokenSource.CreateLinkedTokenSource()将它们组合为一个,并使用它。当组合的令牌源被取消时,您可以检查两个原始令牌源以查看发生了什么。

相关内容

最新更新