我在c#中創建HTTP WebRequests來導航網站。我創建請求,獲取響應並將其讀入StreamReader。然後我使用相同的請求變量來創建一個新的請求,並得到一個新的響應...關閉HttpWebRequest來釋放資源
下面是我的代碼:
HttpWebRequest request;
WebResponse response;
Stream responseStream;
StreamReader reader;
string responseFromServer;
request = (HttpWebRequest)WebRequest.Create("https://www.firstRequest.com");
//set cookies and headers here...
response = request.GetResponse();
responseStream = response.GetResponseStream();
reader = new StreamReader(responseStream);
responseFromServer = reader.ReadToEnd();
//second request using the same variables
request = (HttpWebRequest)WebRequest.Create("https://www.secondRequest.com");
response = request.GetResponse();
responseStream = response.GetResponseStream();
reader = new StreamReader(responseStream);
responseFromServer = reader.ReadToEnd();
我知道我必須關閉的響應,流,StreamReader的自由提供資源。 我是否必須在每次請求之間或在每件事情結束時都這樣做?
以及哪些我必須關閉?反應,流媒體和閱讀器?不是要求 - 對嗎?關閉相同的資源兩次會傷害嗎?我在一個循環中調用close,然後當它打破循環時,我想再次調用close以獲得積極的結果。這可以嗎? – Diane2
該請求沒有實現'IDisposable',所以沒有什麼可以關閉的。其他一切都應該正確關閉。當然,如果每次使用'Close',則可以在循環中重用該變量。取決於循環運行的頻率,您可能需要考慮更高效的替代方案。只要確保在變量被覆蓋或不再使用之前調用Close。這通常可以通過良好的環路設計輕鬆實現。 – Xaser
謝謝大家!我想我會採用這種方法。 – Diane2