这 运行 会异步吗?

Would this run async?

我正在进行两个可以(理想情况下)同时 运行 的调用。第一次调用最终访问数据库,第二次访问 Web API。问题是两个执行路径都不是异步的。我一直在尝试更熟悉 TPL,但还不够熟悉。如果我将这两个方法调用包装在 Tasks 中并等待它们,这真的会同时执行吗?

你混淆了async异步等待模式)和异步,是的你可以让两者都运行 异步任务和/或异步等待模式,前提是它们不依赖于每个其他

public async Task DoMagicStuff()
{       
    var task1 = DoDbAsync(); // Start Task
    var task2 = DoWebAsync();// Start Task

    // wait for both
    await Task.WhenAll(task1,task2);
}

IOCPU 的混合 工作

public async Task DoMagicStuff()
{

    var task1 = DoDbAsync(); // Start Task
    var task2 = Task.Run(() => DoWebAsync());// Start Task

    // wait for both
    await Task.WhenAll(task1,task2);
}

或没有任何 async,您可以使用 Task.WaitAll