HttpClientを使用して、.NET4.0プロジェクトのリモートサービスにデータを投稿しています。私はこの操作のブロックには関心がないので、ContinueWithまたはasync/awaitをスキップしてResultを使用できると考えました。
デバッグ中に、リモートサーバーが応答しないという問題が発生しました。コードをステップ実行すると、コードが3行目で実行を停止したように見えました...現在のスタックポインタ行が黄色で強調表示されなくなり、次の行に進みませんでした。消えたばかりです。リクエストがタイムアウトするのを待つ必要があることに気付くのに少し時間がかかりました。
var client = new HttpClient();
var task = client.PostAsync("http://someservice/", someContent);
var response = task.Result;
私の理解では、タスクでResultを呼び出すと、コードが同期的に実行され、次のように動作します(HttpClientにPostメソッドがないことはわかっています)。
var client = new HttpClient();
var response = client.Post("http://someservice/", someContent);
これが悪いことかどうかはわかりませんが、頭を悩ませているだけです。HttpClientが結果ではなくタスクを直接返すという事実のおかげで、私がそれを避けていると思っていても、私のアプリケーションは自動的に非同期を利用しているというのは本当に本当ですか?