gpt4 book ai didi

c# - 没有 async void 的即发即忘

转载 作者:行者123 更新时间:2023-11-30 21:43:28 25 4
gpt4 key购买 nike

我有三种方法,第一个结果将用于接下来的两种方法,并且不会返回任何数据。

 result= await DataAccess.Query(param); //Query 
await DataAccess.Create(result);
await DataAccess.Update(result);
  1. 我真的需要在这里使用 await 吗?

  2. 使用 async void 是否正确 在创建和更新函数中?

  3. 正确的做法是什么 着火了忘了这里?
  4. 如果我不提异步会火吗 忘记了?
  5. async without await 的意义是什么 只用于同步运行?我什至可以在没有该关键字的情况下实现这一目标。

最佳答案

no data expected to be return back.

错误呢?如果发生错误,是否需要返回错误代码,或者即使 CreateUpdate 失败,200 OK 是否可以接受?

我假设您需要一个错误代码。 99.99% 的电话会。

Do I really need to use await here?

好吧,如果您想要同步方法,那么您可以只调用同步 API。不过,我不知道你为什么想要那个。

提醒:await 与返回浏览器无关。它与使用更少的线程池线程有关,允许您的服务器进一步扩展。

is it correct to use async void in create and update function?

没有。从来没有。

what will be the right approach to do a fire and forget here?

正确的做法是“不要”。即发即弃很难正确执行,事实上,由于您需要错误代码,您不能执行即发即弃。

我写了更多关于即发即弃的内容 - 包括为什么 StartNewTask.Run 是无效的解决方案 - on my blog .请注意,唯一完全可靠的解决方案(包括升级场景)是最后一种(分布式架构)。

what is the significance of async without await if it only used to run synchronously? I can even achieve that without that keyword.

串行(按顺序)运行,而不是同步(阻塞线程)。 async 的好处是允许更大的可伸缩性。有关详细信息,请参阅我的 intro to async on ASP.NET文章。

关于c# - 没有 async void 的即发即忘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41696141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com