【发布时间】:2020-04-13 05:44:23
【问题描述】:
我发现自己经常写这样的代码:
try
{
cancellationTokenSource.Cancel();
await task.ConfigureAwait(false); // this is the task that was cancelled
}
catch(OperationCanceledException)
{
// Cancellation expected and requested
}
鉴于我请求取消,这是意料之中的,我真的希望忽略该异常。这似乎很常见。
有没有更简洁的方法来做到这一点?我错过了一些关于取消的事情吗?好像应该有task.CancellationExpected()方法什么的。
【问题讨论】:
-
如果你取消了它,你为什么还要
await它呢? -
请求取消,没有取消。
-
@DavidG 我假设在继续之前确保任务实际上已经停止了它的工作。这是一个有效的要求。
-
大多数问题的答案“我经常复制粘贴此代码,如何使其更简洁?”是编写一个包含复制粘贴代码的方法并调用它。你是否拒绝过这个解决方案,如果是,你能说出你拒绝它的原因吗?
-
@EricLippert 我没有拒绝它。这很可能就是答案。我的问题的根源是,这似乎很常见,以至于框架中会有一些东西。
标签: c# async-await task cancellation cancellation-token