首页 > 解决方案 > 为什么在评估 OperationCanceledException 时检查 cancelationToken?

问题描述

OperationCanceledException 可能有几个不同的原因引发:

为了解决这个问题,一个常见的解决方法(在此处描述,等:区分超时与用户取消)如下:

catch (OperationCanceledException ex)
{
    if (token.IsCancellationRequested)
    {
        return -1;
    }

    return -2;
}

但对我来说,查看给予异常的实际取消状态会更有意义。像这样的东西:

if (ex is OperationCanceledException ocEx)
{
    if (ocEx.CancellationToken.IsCancellationRequested)
    {
        return -1;
    }

    return -2;
}

我是否遗漏了什么,是否有某些原因没有将其作为解决此常见问题的解决方案进行推广?

标签: c#.netazure-service-fabric

解决方案


推荐阅读