1

重複の可能性: Async await キーワードは ContinueWith ラムダと同等ですか?

編集:

この質問は重複としてマークされていますが、まったく同じではありません。await が TaskContinuationOptions.AttachedToParent と連動して ContinueWith に相当するかどうかについて具体的に尋ねています

これですか(非同期メソッド本体内)

    await SomeMethodAsync();

    Console.WriteLine("hi");

に相当する

    Task.ContinueWith(delegate() {

        Console.WriteLine("hi");

    }, TaskContinuationOptions.AttachedToParent);

}

?

Googleで見つけた唯一の答えは、これらは同等ではないと言っていますが、私はそれを信じていません-

最初の例では、非同期メソッド本体は、最初の await に達するとすぐに Task をユーザーに返します。タスクが子タスクで待機していなかった場合 (AttachedToParent オプションのため)、タスクは既に完了しています。

私の正気は、これが事実であるかどうかにかかっています。

Google で見つけた回答はこちら 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 に答える