Предупреждение компилятора об asyn c не должно происходить - PullRequest
1 голос
/ 18 июня 2020

Таким образом, следующий код вызывает предупреждение компилятора:

" Asyn c функция без оператора ожидания будет выполняться синхронно "

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

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

Мой вопрос: ниже, есть ли что-то очень базовое c Я не понимаю в async / await или это просто ошибка компилятора, потому что я не указал явное « await »

1 Ответ

9 голосов
/ 18 июня 2020

Task.WaitAll блокирует текущий поток, поэтому предупреждение верное - вы пытаетесь реализовать метод asyn c, но это не asyn c, так как ничего не ожидается.

Вы вероятно, имел ввиду:

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

    await Task.WhenAll(insertTasks);
    await Task.WhenAll(updateTasks);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...