2010-12-01 13 views
1
Uri targetUri = new Uri(targetURL);  
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
StreamReader reader = new StreamReader(response.GetResponseStream()); 
string data = reader.ReadToEnd(); 
response.Close(); 

なぜ上記のコードは正常に動作しますが、次のコードは正常に動作しますか? 通知次のコードの早い段階で応答を閉じます。HttpWebResponseを早く終了したときにStreamreaderが動作しない

Uri targetUri = new Uri(targetURL); 
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(targetUri); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
StreamReader reader = new StreamReader(response.GetResponseStream()); 
response.Close(); 
string data = reader.ReadToEnd(); 

答えて

6

応答を閉じると、応答ストリームも閉じられます。したがって、StreamReaderは、もはや何も読み込めません。 WebResponse.Closeのドキュメントから

Closeメソッドは、にWebResponseで使用される リソースをクリーンアップし、 はStream.Closeメソッドを呼び出すことにより、 基になるストリームを閉じます。

0

あなたの読者は応答からのストリームで初期化されていますので、それを使用しています。

レスポンスストリームを閉じると、読者は動作する基本ストリームがなくなります。

関連する問題