因此以下代码触发了编译器警告:
“ 没有等待操作符的异步函数将同步运行”
public async Task UpsertMariaDb()
{
IEnumerable<Task> insertTasks = InsertSomethingDb();
IEnumerable<Task> updateTasks = UpdateSomethingDb();
Task.WaitAll(insertTasks.ToArray());
Task.WaitAll(updateTasks.ToArray());
}
我的问题如下,关于async / await,我是否不了解某些基本知识,或者这仅仅是编译器警告错误,因为我没有明确地输入“ await ” < / p>
答案 0 :(得分:9)
Task.WaitAll
阻止了当前线程,因此警告是正确的-您尝试实现异步方法,但由于没有等待等待,所以它不是异步的。
您可能打算这样做:
public async Task UpsertMariaDb()
{
IEnumerable<Task> insertTasks = InsertSomethingDb();
IEnumerable<Task> updateTasks = UpdateSomethingDb();
await Task.WhenAll(insertTasks);
await Task.WhenAll(updateTasks);
}