gpt4 book ai didi

C#异步调用 "invoke and forget"

转载 作者:行者123 更新时间:2023-11-30 20:18:03 25 4
gpt4 key购买 nike

在 c# 中,当您在异步方法中调用 await 方法时,代码将从调用上下文执行到该方法。如果我想进行一个异步调用,它将直接从同一行代码继续(即使异步操作尚未完成)而不是返回调用上下文怎么办?我该怎么做?

最佳答案

What if I want to make an asynchronous call which will just continue from the same line of code directly (even if the asynchronous action did not finish yet) instead of getting back to the calling context? How can I do that?

最简单的方法,无论 Something 是同步的还是异步的,它都有效:

var _ = Task.Run(() => Something());

但是,正如 Eric Lippert 所说:

it is a strange thing to get a task and then not care about what happens when it completes.

或者,正如我喜欢说的那样:即发即弃几乎永远不会您真正想要的。 “忘记”意味着:

  1. 您不关心它何时完成。
  2. 您不关心是否它完成了。例如,如果您的应用程序退出(或者如果在 ASP.NET 上,应用程序池被回收),那么您的后台工作就会丢失。
  3. 您不关心它是否成功完成。例如,如果您的工作抛出异常,您希望默默地吞下该异常。

在实际代码中,这种情况极其很少见。

关于C#异步调用 "invoke and forget",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42640730/

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