我有一个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 请求调用中等待将等待任务完成后再响应请求,从而无缘无故地增加响应时间。