【发布时间】:2019-11-12 08:52:59
【问题描述】:
我正在开发 WebAPI,其中一个 WebApi 操作方法调用了另一个方法,其中包含我不想等待的 Async 方法。打电话就忘了。
public async Task<IHttpActionResult> Convert(....)
{
//......
//VS warning here
_asyncJobService.SendWebHook();
//......
}
public async Task<HttpResponseMessage> SendWebHook()
{
//Send and forget, don't wait for result
return await httpClient.GetAsync("http://stackoverflow.com");
}
我从 VS 得到的警告是
警告 CS4014 由于不等待此调用,因此执行 当前方法在调用完成之前继续。考虑 将 'await' 运算符应用于调用结果。
在没有 VS 警告的情况下连接所有内容的正确方法是什么?
【问题讨论】:
-
您可以在代码中明确禁用警告。 VS 应该提供“快速修复”来插入它。
-
如果您在通话结束后不打算做某事,则不需要
awaitinSendWebHook。您可以将方法简化为public Task<HttpResponseMessage> SendWebHook()=>httpClient.GetAsync("http://stackoverflow.com"); -
对于警告,将任务分配给变量或
_,无需等待。async和await不会让任何东西异步运行,它们有助于 await 已经运行的操作。如果您使用_ =SendWebHook();,则该任务将被丢弃并且不会生成警告 -
请注意:关于命名异步方法的guideline 是将“异步”后缀附加到方法的名称中。
标签: c# asynchronous async-await