async構文は非同期処理をあたかも同期処理のフローのように記述できるため非常に便利な構文ですが、やっぱりちゃんと理解してないとはまります。非同期処理の呼び出しを順序立てて行う必要がある場合。実験のために応答時間の異なる3つのAPI(ともいえないもの)を用意します。・http://coelacanth.heteml.jp/win8/api_test/a.php応答に3秒かかります。・http://coelacanth.heteml.jp/win8/api_test/b.phpほぼ即座に応答します。・http://coelacanth.heteml.jp/win8/api_test/c.php応答に2秒かかります。シンプルに以下のようなコードを実行します。response3.Content.ReadAsStringAsync());このコードを実行するとa→b→cという結果を得られます。呼び出しが同期的に行われていることがわかります。続いて各呼び出しを関数として切り出します。}予想通りこの呼び出しは順次実行されません。得られる出力は以下です。b→c→cまさしく非同期な結果ですね。同期的に呼び出したい場合(awaitをつけて呼び出したい場合)どのように書くかというと以下のようにTaskを利用します。}これでa→b→cの出力が得られました。今回のサンプルのDLはこちら(85.3kb)追記:コメントでneueccさんに指摘いただきました。AMここでいう「同期的」というのは、「同期のような非同期」でいいでしょうか?一番上の例のようなコードが勿論ベストなわけですが、それをメソッドに切り出すのならTask.Runで包むまず、そのままstringを返すべきかと思います。str;}こうですね。response.Content.ReadAsStringAsync());}です。GetC();と呼べます。AMああ、すみません、コメント内だとジェネリクスが消えるので、戻り値の型が変ですね。GetTaskC()です。AM>neueccさんいつも勉強させてもらっております!!ご指摘ありがとうございます。確認後、ブログの内容も適切なものに修正させていただきます。コメントをキャンセルメールアドレスが公開されることはありません。付いている欄は必須項目ですCommentName*Email*Website古代魚庵という屋号でフリーランスのプログラマー兼ライター業をやっています。