在C#中使用异步和无返回值来实现“点火并忘记”功能

3

我有一个在Web应用程序中返回void的方法

public static void doSomething(){
}

我希望通过在C# 5.0中使用async,使其变成“火而忘”的状态,如何操作?

顺便提一下,如果void doSomethingQuick()是一个短时间运行的方法,最节约资源的“火而忘”方法是什么?

如果void doSomethingSlow()是一个长时间运行的方法,最节约资源的“火而忘”方法是什么?


8
异步的关键在于你不会忘记。只需使用QueueUserWorkItem。 - Hans Passant
1
Task.Factory.StartNew(() => doSomething()); - L.B
1个回答

1

有三种类型的异步方法:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接