c# - “if”条件下的可等待方法 - 执行是否等待方法的结果
问题描述
这段代码是否有意义:
if (await CheckCondition1())
{
Work1();
}
if (await CheckCondition2())
{
Work2();
}
if (await CheckCondition3())
{
Work3();
}
由于等待的方法在if
语句中,执行是否在进入下一行之前等待结果?还是会导致在后台调用“CheckCondition 1-3”方法并在结果准备好时执行“Work”方法?
换句话说,如果“CheckConditions”是长时间运行的,它们会并行执行,还是像同步代码一样顺序执行?
解决方案
所有三个“检查”方法都一个接一个地执行(因为等待)。如果要并行执行它们,则必须调用这些方法并在调用所有方法后等待它们:
Task<bool> task1 = CheckCondition1();
Task<bool> task2 = CheckCondition2();
Task<bool> task3 = CheckCondition3();
if(await task1)
{
Work1();
}
if(await task2)
{
Work2();
}
if(await task3)
{
Work3();
}
推荐阅读
- javascript - 使用 Three.js 加载 600 万个三角形会使浏览器崩溃
- python - 如何避免在源代码中保留版本号?
- html - 如何在下拉菜单中调整或格式化块中的文本
- node.js - 在 Azure Pipelines 中运行 npm 版本脚本
- python - 通过 datetime.date 列表选择数据帧行(datetimeindex)
- javascript - 如何使用 img (即 href 链接)和单选按钮(值或 id)制作一个功能并转到下一页
- c# - BindingList 更新对象更改但忽略新的或删除的对象
- c# - 仅限于特定值类型的泛型
- ruby-on-rails - 在 http://localhost:3000/packs 上出现 XSS 问题
- json - 如何使用 JMeter 验证具有 1 个动态字段的整个 JSON