在生产中看到了这样的代码:
var task = new HttpClient().GetAsync(u);
var response = await task;
if (task.IsCompletedSuccessfully)
{
Console.WriteLine($"Task is faulted: {task}");
}
问题:在 await
关键字之后检查任务状态是否有意义?据我所知,编译器将“围绕”这段代码构建一个状态机,它会在出现错误时抛出异常。基于此,检查任务状态没有任何意义。
我错过了什么吗?
谢谢
最佳答案
没有。
如果有异常,await 会抛出它。它基本上不会返回任务,而是返回值或抛出异常。
因此,进一步评估任务没有意义。
否则 await 的 yield 将非常微不足道;)
关于c#等待后检查任务状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62859079/