【问题标题】:Use async with void return for fire and forget in C#在 C# 中使用带有 void return 的异步并忘记
【发布时间】:2012-08-14 17:44:15
【问题描述】:

我在 Web APP 中有一个方法返回 void

public static void doSomething(){
}

我喜欢在 c# 5.0 中使用async 让它变得火而忘记,怎么样?

顺便说一句,如果void doSomethingQuick() 是短期方法,那么最节省资源的方法是什么?

如果void doSomethingSlow() 是一个长时间运行的方法,那么最节省资源的方法是什么?

【问题讨论】:

  • 异步的重点是您不要忘记。只需使用 QueueUserWorkItem。
  • Task.Factory.StartNew(() => doSomething());

标签: c# threadpool async-await


【解决方案1】:

异步方法分为三种:

async void Foo()
async Task Bar()
async Task<T> Baz()

请注意,只有最后两个可以(a)等待。此示例中的 Foo 用于火灾和忘记场景。您必须记住,在这种情况下,async 只是方法本身可能使用await 的一个指标。因此你可以声明async void doSomethingQuick()async void doSomethingSlow()。仅仅因为一个方法返回一个任务并不意味着它在一个单独的线程上执行。它可能会返回一个已完成的任务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-06
    • 1970-01-01
    • 2020-04-25
    • 2013-09-01
    • 2018-07-27
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    相关资源
    最近更新 更多