C# 条件语句中的异步等待问题

C# 条件语句中的异步等待问题,c#,asynchronous,async-await,C#,Asynchronous,Async Await,我最近开始在C中使用异步等待功能,但遇到了一个问题。对不起,如果是基本的。我不熟悉异步方法 考虑使用三种异步方法: public async Task DoFirstJob () { /// some works to do } public async Task DoSecondJob() { /// some works to do } public async Task DoTheJob() { await DoFirstJob(); await DoSecondJob()

我最近开始在C中使用异步等待功能,但遇到了一个问题。对不起,如果是基本的。我不熟悉异步方法

考虑使用三种异步方法:

public async Task DoFirstJob () { /// some works to do }
public async Task DoSecondJob() { /// some works to do }
public async Task DoTheJob() {
    await DoFirstJob();
    await DoSecondJob();
}
它很好用。但当我想在某些条件下调用DoFirstJob方法时,就会出现问题,例如:

public async Task DoTheJob() {
    if (IsConditionTrue()) {
        await DoFirstJob();
    }
    await DoSecondJob();
}

现在DoSecondJob不会等待DoFirstJob完成。我真的需要知道问题是什么以及如何解决它。非常感谢。

您是否调试了代码以检查您的条件是否正确?所以DoFirstJob会接到电话,当然。我不是说DoFirstJob根本不会被调用。在我看来,这两个方法同时运行。将IsConditionTrue替换为true,然后尝试调试。。?或者使IsConditionTrue始终返回true并调试..请提供演示问题的代码,最好准备好复制/粘贴到LinqPad或控制台应用程序。确保提供清晰的方式来检测您的案例,如计数器/写入线。现在您不等待DoFirstJob完成看起来不是很有说服力。@user3530012,我在条件中从DoFirstJob返回true,它给出了预期的输出,该输出首先调用DoFirstJob,然后调用DoSecondJob,您的代码中可能存在导致意外结果的内容。共享代码有助于识别问题。