c#等待后检查任务状态

标签 c# task

在生产中看到了这样的代码:

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/

相关文章:

c# - Asp.Net Core Web API 2.2 Controller 不返回完整的 JSON

c# - async 和 await 是单线程的真的吗?

python - Django 后台任务 vs Celery

c# - Visual Studio : How to easily convert a method and its callers to async

c# - 使用 TransactionScope 的嵌套事务

c# - Parallel.ForEach - 它在单核机器上运行在哪里?

c# - HttpContext.Current.User 和 HttpContext.User 有什么区别

c# - 检查复选框值的代码块

python - 如何使用 python 的 asyncio 模块正确创建和运行并发任务?

ruby-on-rails - Rake任务: How to make task from another namespace prerequesite?