私は非常に簡単な必要性を持っています - 私のC#コードは、HTTP経由でリモートサーバーに接続し、文字列をダウンロードする必要があります。簡単なGET要求、それ以上はありません。.NET 4.5からHTTP経由で文字列をダウンロードする方法は?
私のアプリケーションが反応し続けることを保証するために、操作にタイムアウト(例えば3秒)を加えたいと思っています。
私の最初の考えはSystem.Net.WebClient
ですが、タイムアウトはサポートされていません。
次に、私は良い古いSystem.Net.HttpWebRequest
を試したかったのですが、残念なことに - .NET 4.5以降はbeen marked as obsoleteです!
どうすれば使用できますか?私はSystem.Net.Http
名前空間をチェックアウトし、それが唯一の非同期使用量は、力がTask
Sを使用することができ、一般的にのみ(それが使用しているため、同じ古いSystem.Net.HttpWebRequest
とにかく下)
私は非同期のものは欲しくない、私は他のスレッドを関与させたくない、私はタスクフレームワークを関与させたくない、私はラッパーのトンを望んでいない。
.NET 4.5ではこれを行う正しい方法は何ですか?
これは非推奨の 'HttpWebRequest'ではなく、コンストラクタです。 'HttpWebRequestコンストラクタを使用しないでください。 WebRequest.Createメソッドを使用して新しいHttpWebRequestオブジェクトを初期化することができます。 – GSerg
WebClient非同期メソッドを使用してタイムアウトを設定することはできます:http://stackoverflow.com/a/601899/54937 –
そして、いつでも 'WebClient'バックグラウンドスレッドに渡し、ある種のセマフォ( 'AutoResetEvent'のような)を使ってタイムアウトしてください。 – Will