1

可能重复: Async await 关键字是否等同于 ContinueWith lambda?

编辑:

我看到这个问题已被标记为重复,但它并不完全相同。我特意询问 await 是否等同于 ContinueWith IN CONJUNCTION WITH TaskContinuationOptions.AttachedToParent

这是(在异步方法体内)

    await SomeMethodAsync();

    Console.WriteLine("hi");

相当于

    Task.ContinueWith(delegate() {

        Console.WriteLine("hi");

    }, TaskContinuationOptions.AttachedToParent);

}

?

我在谷歌上能找到的唯一答案是这些不相等,但我不相信,因为 -

在第一个示例中,异步方法主体在第一次等待时立即将任务返回给用户,如果任务没有等待子任务(因为 AttachedToParent 选项),那么它已经完成了。

我的理智取决于这种情况。

我在谷歌上找到的答案在这里 http://social.msdn.microsoft.com/Forums/en-US/async/thread/bec2151a-abfd-43b9-a2e0-ffe34ae481f6/

4

1 回答 1

0

所以斯蒂芬图布显然是一个相当权威的人物......

我做了一些测试,现在我明白了为什么 await 不需要使用 AttachedToParent 创建它的延续。

这是因为这个

await SomeMethodAsync();

正在接收继续的结果,然后父任务从中断的地方继续

于 2013-01-11T21:56:16.203 回答