首页 > 解决方案 > “if”条件下的可等待方法 - 执行是否等待方法的结果

问题描述

这段代码是否有意义:

if (await CheckCondition1())
{
    Work1();
}
if (await CheckCondition2())
{
    Work2();
}
if (await CheckCondition3())
{
    Work3();
}

由于等待的方法在if语句中,执行是否在进入下一行之前等待结果?还是会导致在后台调用“CheckCondition 1-3”方法并在结果准备好时执行“Work”方法?

换句话说,如果“CheckConditions”是长时间运行的,它们会并行执行,还是像同步代码一样顺序执行?

标签: c#async-await

解决方案


所有三个“检查”方法都一个接一个地执行(因为等待)。如果要并行执行它们,则必须调用这些方法并在调用所有方法后等待它们:

Task<bool> task1 = CheckCondition1();
Task<bool> task2 = CheckCondition2();
Task<bool> task3 = CheckCondition3();
if(await task1)
{
   Work1();
}
if(await task2)
{
   Work2();
}
if(await task3)
{
   Work3();
}

推荐阅读