是等待,相当于使用TaskContinuationOptions.AttachedToParent选项创建延续
本文关键字:AttachedToParent 选项 创建 延续 TaskContinuationOptions 等待 相当于 | 更新日期: 2023-09-27 17:51:20
可能重复: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();
正在接收继续的结果,然后父任务在它停止的地方继续