在C#中,当我们调用异步方法时,需要在该方法中等待它,否则编译器将发出警告消息,称该方法将被称为sync,而无需“等待”。我知道在以下情况下这很有用:
var task = DoSomethingLongAsync();
DoSomethingElse();
await task;
那是因为当我们调用该异步方法时,我们可以做其他事情,然后等待异步结果。
但是在某些其他情况下,我们不需要等待异步结果,例如类似于Web服务器的场景:
listen();
while (true)
{
var request = Accept();
await ProcessRequestAsync(request);
}
显然,对于上述情况,我们希望可以并行处理请求。但是,如果我们在那里使用await(当前),则请求将被一个接一个地处理,而不是我们期望的那样。
那么在相似的情况下我们应该如何调用异步方法呢?
你不具备使用await
-这是一个警告,而不是错误。
编译器会向您发出此警告,因为方法的通常用例async
是异步运行它们,并为此使用await
关键字。
基本上,此警告是编译器提醒您的方法,确保不会引起注意-但这不会阻止您使用async
没有await
关键字的方法-您的代码将编译并运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句