当前位置: 首页 > 知识库问答 >
问题:

不要等待异步方法,但VS会发出警告

狄峰
2023-03-14
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警告的情况下连接所有东西的正确方法是什么?

共有1个答案

郑旭
2023-03-14

首先,在sendwebhook()中不需要asyncawait,除非您打算在等待getAsync之后执行某些操作。不过,在这种情况下,您只需返回。

Asyncawait不使任何东西异步运行,它们帮助等待已经运行的操作。

Async只是一个关键字,它告诉编译器方法将使用await。作为响应,编译器生成一个类似于迭代器方法的状态机。await`反过来,等待已经执行的异步操作,它不会使任何东西本身异步运行。

您可以将该方法简化为:

public Task<HttpResponseMessage> SendWebHook()=>httpClient.GetAsync("http://stackoverflow.com");

至于警告,您可以将返回的任务分配给变量,或者使用_丢弃它:

_ =SendWebHook();

这会告诉编译器您真的不想对该任务做任何事情

 类似资料:
  • 我有一组从基类继承的命令。基类有以下声明: 此异步方法缺少“await”运算符,将同步运行。考虑使用'await'运算符来等待非阻塞API调用,或者使用'await task.run(...)'在后台线程上执行CPU绑定的工作。 显式提供任务完成返回值是否正确?

  • 我得到警告“这个异步方法缺少'await'运算符,将同步运行。考虑使用'await'运算符来等待非阻塞API调用,或者使用'await task.run(...)‘来在后台线程上执行CPU绑定的工作。虽然这听起来很明显,但我认为我已经被覆盖了,因为我运行所有进程,并在我的processFiles方法中有一个await任务。Whenall()。我需要用不同的方式来做这件事吗?如果有任何想法,我将不胜

  • 在实际应用中,我对 C# 中的异步和 await 方法进行了说明。请考虑以程,这是工作代码的简单版本: 助手.cs 功能控制器.cs processing.js 现在,问题是第三方服务的所需时间更少(例如:2秒),而所需的时间更多(例如:100秒)。进行两个ajax调用并使用异步和等待是为了呈现自我。屏幕上显示数据1,不要等到自己。Data2已被检索。不幸的是,这种情况没有发生,我必须等待100秒

  • 我正在尝试将数据库调用移出控制器,以清理并使其可测试。当它们在控制器中时,一切都会顺利进行。我将它们移出控制器,并添加了一个异步,以确保我们等待。否则,我将调用的中的函数。现在,一旦我使用async/await,控制器中的函数就会认为没有用户,因为它没有等待。 有几个关于异步等待的SO问题,但我没有找到一个解决我的问题。我确实验证了返回了我的用户,并添加了控制台日志来显示路径。 节点猫鼬异步等待似

  • 我试图在react/electron项目中使用async/await,但它不起作用。我想要的是获取docker容器状态列表。但是安慰。日志(列表)返回未定义的。 有人能帮我吗?:)

  • 这可能是一个更巧妙的问题,但我在ViewComponent类中有以下方法 所以我的问题是我应该采取什么方法?让异步在那里与警告无关,还是有一个解决方案/修复这个警告?它对我的项目有那么大的影响吗? 谢了!