質問: '\n') break; response.Add(c); } return response.ToString(); } ``` このメソッドそのものを変更せずに、このメソッドを内部で呼び出すasync/awaitを使用した非同期メソッドを作成する(Taskを返す非同期メソッドでラップする)ことは可能なのでしょうか? また、その場合どのように作ればよいのでしょうか? できればTask.Runなどを使用してスレッドプールなどの別スレッドで動作するのではなく、呼び出したスレッド上で非同期I/Oとして動作するようにしたいです。 よろしくお願いします。
回答: こんにちは。 > > 別スレッドで動作するのではなく、呼び出したスレッド上で非同期I/Oとして動作するようにしたいです。 > > > これは無理と思います。「非同期I/Oとして動作する」ということは、通常そのI/O完了待ち中に他の処理を割り込ませるという意味ですね。それを同じスレッドで行うためには、Thread.Sleep()中に他の処理を行う仕組みが必要です。しかし、Thread.Sleep()はそのような仕組みを提供しないので無理です。 通常通り、Async関数でラップしてGetResponse()をTask.Runで起動するのが素直な実装と思います。