.NET4.5で登場した、HttpClientクラスはとても便利です。
以前はWebClientやHttpResponse/HttpRequestクラスなどを使っていましたが、それよりも格段に使い勝手がよくなっています。
ただ注意点もあります。HttpClientクラスでは非同期によるダウンロードメソッドが用意されていますが、場合によってはスレッドデッドロックが発生し、結果が返らない状態が永遠に続く、という現象に陥ることがあります。
さらに、タイムアウトを設定しても、非同期呼び出しだとタイムアウト機能が無効化されるのです。
そのため、ダウンロードメソッド呼び出し後に、結果が返ってこない、反応がない、固まった、という現象に見舞われることもあります。
私もその現象が発生しましたが、ConfigureAwaitメソッドを呼び出して解決することができました。
詳しくは、下記のサイトをご覧ください。
HttpClientクラスの利用サンプルはこちら(タイムアウト設定可能)
http://www.atmarkit.co.jp/ait/articles/1501/06/news086.html
ConfigureAwait(false)の記述で回避できるという情報
http://www.slideshare.net/neuecc/httpclient
※「スレッド デッドロック ConfigureAwait」で検索すれば、いろいろな情報が得られます。
2015年12月25日
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/170572354
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/170572354
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック