在C#中,当我们调用一个async方法时,需要在方法内部等待它,否则编译器会给出一个警告信息说该方法将在没有“await”的情况下被调用为sync。 我知道这在以下情况下很有用:
var task = DoSomethingLongAsync();
DoSomethingElse();
await task;
那是因为当我们调用异步方法时,我们可以做其他事情,然后等待异步结果。
但在其他一些情况下,我们不需要等待异步结果,比如类似于web服务器的场景:
listen();
while (true)
{
var request = Accept();
await ProcessRequestAsync(request);
}
显然,对于上述场景,我们希望请求能够并行处理。 但是如果我们在那里使用等待(作为当前),请求将被一个一个地处理,而不是我们预期的那样。
那么在类似的场景下我们应该如何调用异步方法呢?
最佳答案
您必须使用await
- 这是一个警告,而不是错误。
编译器向您发出此警告是因为 async
方法的通常用例是异步运行它们,为此,您可以使用 await
关键字。
基本上,这个警告是编译器提醒您确保这不会被忽视的方式 - 但它不会阻止您在没有 await 的情况下使用
关键字 - 您的代码将编译并运行。async
方法
关于c# - 为什么我们必须等待 C# 中的异步方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58855897/