2011-04-25 15 views
5

मैं सी # में एक डाउनलोड मैनेजर पर काम कर रहा हूं और मैं एकाधिक http अनुरोधों का उपयोग कर रहा हूं और सोच रहा था कि कोई कनेक्शन कैसे ठीक से बंद कर सकता है?HttpWebResponse - कनेक्शन का निपटान ठीक से

क्या प्रतिक्रिया स्ट्रीम पर निपटने के लिए पर्याप्त है? क्या मुझे बंद करने की ज़रूरत है? यह सुनिश्चित नहीं है कि चीजें संभवतः गलत कहां जा सकती हैं लेकिन किसी बिंदु पर एक वेबसाइट उत्तरदायी नहीं होगी।

धन्यवाद!

उत्तर

9

लपेटें अपने HttpWebResponse एक का उपयोग कर ब्लॉक में:

using(HttpWebResponse response = request.GetResponse()) 
{ 
    // do stuff here 
} // response object is automatically disposed of here. 
+0

मैं उपयोग कथन से परिचित हूं लेकिन मैं पहले ही निपटान() को कॉल करने के बाद बुला रहा हूं, क्या कोई अंतर है? – Meniya

+0

जब आप इस तरह 'उपयोग' का उपयोग करते हैं, तो आपको स्वयं को 'निपटान' करने के बारे में चिंता करने की आवश्यकता नहीं है, संकलक आपके लिए इसका ख्याल रखता है। –

0

केली उल्लेख किया है, एक का उपयोग कर ब्लॉक में अपने HttpWebResponse लपेट दें। लेकिन अगर GetResponse() एक अपवाद फेंकता है (उदाहरण के लिए 404 प्रतिक्रिया पर होता है), तो आपको अपवाद में HttpWebResponse को पकड़ने की आवश्यकता है।

HttpWebResponse webResponse = null; 
try { 
    webResponse = (HttpWebResponse)webRequest.GetResponse(); 
} catch (WebException e) { 
    webResponse = (HttpWebResponse)e.Response; 
    if (webResponse == null) { 
     // Handle this. 
    } 
}  
using (webResponse) { 
    // Process the response. 
} 
संबंधित मुद्दे