在C#中,如果一个任务被取消,可以使用ConfigureAwait(false)方法来防止任务取消异常的传播。此外,还可以使用Task.WhenAll方法来等待多个任务的完成。

下面是一个示例代码:

var task = HttpApi.Resolve<IProductDetailAllInfoApi>().GetModel("all", DateTime.Now).Retry(3, p => TimeSpan.FromSeconds(p)).WhenResult(p => !p.success && p.code == ResponCode.JwtTokenError && p.message == "身份令牌已过期,请重新刷新令牌").ConfigureAwait(false);

try
{
    await Task.WhenAll(task);
}
catch (TaskCanceledException)
{
    // 处理任务取消异常
}
catch (Exception ex)
{
    // 处理其他异常
}

在这个例子中,ConfigureAwait(false)方法被用于取消任务异常的传播。然后,使用Task.WhenAll方法来等待任务的完成。当任务被取消时,会抛出TaskCanceledException异常,可以在catch块中处理该异常。如果出现其他异常,也可以在相应的catch块中进行处理。

C# 处理已取消的任务异常:ConfigureAwait(false) 和 Task.WhenAll

原文地址: https://www.cveoy.top/t/topic/p95o 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录