我有一个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()