2016-05-13 91 views
0

我有一個小程序,不斷髮布一些數據(4MB)到遠程服務器。每當內部4MB緩衝區滿時,我會創建一個新的HttpWebRequest,請撥打BeginGetRequestStream/EndGetRequestStream,寫入數據以進行流傳輸,關閉它並完成。因爲我不在乎迴應,所以我沒有撥打GetResponse/BeginGetResponse/EndGetResponse是否需要關閉HttpWebRequest?如何

我的問題是,既然HttpWebRequest沒有Close方法,是否可以安全地離開當前的HttpWebRequest實例?如果我沒有對HttpWebRequest做任何事情,連接是否會自動關閉?如果答案爲否,如何顯式關閉當前的HTTP連接?謝謝。

回答

1

您不應該清理HttpWebRequest,但您確實需要關閉從GetRequestStream返回的流或從GetResponse的響應。我知道你說過你沒有使用任何響應方法,但是你必須使用其中的一個來實際提出請求。

完成WebResponse對象後,必須通過調用Close方法關閉它。或者,如果您已從響應對象獲取響應流,則可以通過調用Stream.Close方法來關閉流。如果您沒有關閉響應或流,則您的應用程序可能無法連接到服務器,並且無法處理其他請求。[1]

[1] https://msdn.microsoft.com/en-us/library/debx8sh9.aspx

+0

謝謝,流是通過使用()封閉,所以它應適當地設置。 – codewarrior

相關問題