不应发生有关异步的编译器警告

时间:2020-06-18 18:15:19

标签: c# .net-core async-await compiler-warnings

因此以下代码触发了编译器警告:

没有等待操作符的异步函数将同步运行

    public async Task UpsertMariaDb()
    {
        IEnumerable<Task> insertTasks = InsertSomethingDb();
        IEnumerable<Task> updateTasks = UpdateSomethingDb();

        Task.WaitAll(insertTasks.ToArray());
        Task.WaitAll(updateTasks.ToArray());
    }

我的问题如下,关于async / await,我是否不了解某些基本知识,或者这仅仅是编译器警告错误,因为我没有明确地输入“ await ” < / p>

1 个答案:

答案 0 :(得分:9)

Task.WaitAll阻止了当前线程,因此警告是正确的-您尝试实现异步方法,但由于没有等待等待,所以它不是异步的。

您可能打算这样做:

public async Task UpsertMariaDb()
{
    IEnumerable<Task> insertTasks = InsertSomethingDb();
    IEnumerable<Task> updateTasks = UpdateSomethingDb();

    await Task.WhenAll(insertTasks);
    await Task.WhenAll(updateTasks);
}