HttpWebRequest が成功した後、非同期読み取り操作をキャンセル/終了する方法を見つけることができませんでした。タイムアウトを設定する方法はありません。ThreadPool.RegisterWaitForSingleObject も機能していません。また、基になるソケットを閉じることもオプションではありません。これは、HttpWebRequest/Reponse がアクセスを提供しないためです。
編集:
悲しいことに、Sunny が提案するこのアプローチは、HttpWebRequest.BeginGetResponse に対してのみ機能します。何らかの理由で GetResponseStream() の後に取得するストリームの場合、 RegisterWaitForSingleObject が機能していません - コールバックは呼び出されません。
状況は次のとおりです。HttpGetRequest を使用するアプリケーションを入手しました。非同期 httpwebrequest の既定の MSDN の例を使用してビルドされます。応答を得ることは魅力のように機能しています。しかし、まれに、私の httpwebrequest が接続しているサーバーがソケットを閉じるのを忘れることがあります。そのため、BeginRead からの無限読み取りにかかっています。
まれに、他のサーバーが忘れる