不应该发生关于异步的编译器警告
Compiler warning about async shouldn't happen
所以下面的代码会触发编译警告:
"没有 await 运算符的异步函数将 运行 同步"
public async Task UpsertMariaDb()
{
IEnumerable<Task> insertTasks = InsertSomethingDb();
IEnumerable<Task> updateTasks = UpdateSomethingDb();
Task.WaitAll(insertTasks.ToArray());
Task.WaitAll(updateTasks.ToArray());
}
我的问题如下,关于 async/await 是否有一些我不理解的非常基本的东西,或者这只是一个编译器警告错误,因为我没有明确的“await "
Task.WaitAll
阻塞当前线程,因此警告是正确的 - 您尝试实现一个异步方法,但它不是异步的,因为没有任何等待。
您可能打算这样做:
public async Task UpsertMariaDb()
{
IEnumerable<Task> insertTasks = InsertSomethingDb();
IEnumerable<Task> updateTasks = UpdateSomethingDb();
await Task.WhenAll(insertTasks);
await Task.WhenAll(updateTasks);
}
所以下面的代码会触发编译警告:
"没有 await 运算符的异步函数将 运行 同步"
public async Task UpsertMariaDb()
{
IEnumerable<Task> insertTasks = InsertSomethingDb();
IEnumerable<Task> updateTasks = UpdateSomethingDb();
Task.WaitAll(insertTasks.ToArray());
Task.WaitAll(updateTasks.ToArray());
}
我的问题如下,关于 async/await 是否有一些我不理解的非常基本的东西,或者这只是一个编译器警告错误,因为我没有明确的“await "
Task.WaitAll
阻塞当前线程,因此警告是正确的 - 您尝试实现一个异步方法,但它不是异步的,因为没有任何等待。
您可能打算这样做:
public async Task UpsertMariaDb()
{
IEnumerable<Task> insertTasks = InsertSomethingDb();
IEnumerable<Task> updateTasks = UpdateSomethingDb();
await Task.WhenAll(insertTasks);
await Task.WhenAll(updateTasks);
}