是等待,相当于使用TaskContinuationOptions.AttachedToParent选项创建延续



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

编辑:

我看到这个问题被标记为重复,但不太一样。我特别询问wait是否等同于ContinueWith IN CONNECTION WITH TaskContinuationOptions.AttachedToParent

这是(在异步方法体内(吗

    await SomeMethodAsync();
    Console.WriteLine("hi");

相当于

    Task.ContinueWith(delegate() {
        Console.WriteLine("hi");
    }, TaskContinuationOptions.AttachedToParent);
}

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

在第一个示例中,异步方法体在到达第一个等待时立即将Task返回给用户,如果该任务没有在子任务上等待(由于AttachedToParent选项(,则它将已经完成。

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

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

所以Stephen Toub显然是一个权威人物…

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

因为这个

await SomeMethodAsync();

正在接收继续的结果,然后父任务在它停止的地方继续

相关内容

  • 没有找到相关文章

最新更新