c# - 为什么在评估 OperationCanceledException 时检查 cancelationToken?
问题描述
OperationCanceledException 可能有几个不同的原因引发:
- 取消令牌已设置,或
- 已超时 (TaskCancelationException)
为了解决这个问题,一个常见的解决方法(在此处描述,等:区分超时与用户取消)如下:
catch (OperationCanceledException ex)
{
if (token.IsCancellationRequested)
{
return -1;
}
return -2;
}
但对我来说,查看给予异常的实际取消状态会更有意义。像这样的东西:
if (ex is OperationCanceledException ocEx)
{
if (ocEx.CancellationToken.IsCancellationRequested)
{
return -1;
}
return -2;
}
我是否遗漏了什么,是否有某些原因没有将其作为解决此常见问题的解决方案进行推广?
解决方案
推荐阅读
- android - 从 Chrome 或其他网络浏览器应用程序共享所选文本时,是否可以获取页面的 URL?
- flutter - 无法在 intellijIDEA 的 .dart 文件中打开 toUpperCase() 或 toLowerCase() 的实现或声明
- mobile - 移动设备上的物理按钮按住快捷方式
- keras - Keras plot_model 输入和输出形状只有问号
- maven - 如何在 POM 文件中排除来自父级的依赖项
- python - 有没有办法按数字为键的键对字典的输出进行排序?
- javascript - React Native 限制字符
- python - 切片数组后未出现Matplotlib条形图
- optimization - Pyomo:尽管有界但目标函数无界
- java - 用于 MainActivity 的 Android API 26 上的 ClassNotFoundException(使用 API 30)