异步方法 - 等待和返回任务之间的区别

时间:2017-01-03 09:41:49

标签: c# asynchronous

这两种方法之间的实际差异(如果有的话)是什么?

    public static Task DoSomething()
    {
        return FooAsync();
    }

    public static async Task DoSomethingAsync()
    {
        await FooAsync();
    }

3 个答案:

答案 0 :(得分:2)

实际差异在使用它们方面是:什么都没有。两者都是'等待'。

生成的代码会有很小的差异,异步版本将变成状态机。真的不用担心。

由于这些方法不做任何其他事情,因此很难优先选择其他方法。第一个(最简单的)会做。

答案 1 :(得分:0)

await实际上会等待任务完成并返回结果。当你返回一个任务时,它返回一个将在未来完成的任务的句柄,因此你等待任务得到结果。

答案 2 :(得分:0)

呼叫者询问时,DoSomething()将被执行。 因此,当您执行await DoSomething();时,它将被执行。但是您可以将任务存储在变量中并稍后执行:

var task = DoSomething();
// Do stuff
await task();

使用DoSomethingAsync,它将在被调用时执行。因为它是异步的。