我有一个返回无数据的async
方法:
public async Task MyAsyncMethod()
{
// do some stuff async, don't return any data
}
我正在从另一个方法中调用此函数并返回一些数据:
public string GetStringData()
{
MyAsyncMethod(); // this generates a warning and swallows exceptions
return "hello world";
}
调用
MyAsyncMethod()
而不等待它会在Visual Studio中引发"因为此调用没有被等待,所以当前方法在调用完成前继续运行"的警告。在该警告页面上,它指出:“只有在确信您不想等待异步调用完成且被调用的方法不会引发任何异常时,您才应考虑抑制警告。”
我确定我不需要等待调用完成;我没有时间等待。但是该调用可能会引发异常。
我曾经遇到过这个问题,我相信这是一个常见的问题,必须有一个常见的解决方案。
如何安全地调用异步方法而不等待结果?
更新:
对于建议我只需等待结果的人,这是响应我们Web服务(ASP.NET Web API)上的Web请求的代码。在UI上下文中等待可以保持UI线程空闲,但在Web请求调用中等待Task完成将在响应请求之前等待,从而增加了响应时间,没有理由这样做。
MyAsyncMethod().Wait()
。 - Peter RitchieTask.Run()
? - Kyle Delaney