2010-05-11 9 views
5

में संसाधन का निपटान करें जब नियंत्रक में कोई विधि फाइलस्ट्रीम या फ़ाइल या filecontentresult ऑब्जेक्ट लौटाती है तो संसाधनों का निपटान करने का सही तरीका क्या है?एमवीसी - नियंत्रक

पूर्व के लिए जब नीचे की तरह कुछ कर रही:

using CrystalDecisions.CrystalReports.Engine; 

public ActionResult Report() 
{ 
    ReportClass rptH = new ReportClass(); 
    rptH.FileName = Server.MapPath("[reportName].rpt"); 
    rptH.Load(); 
    rptH.SetDataSource([datatable]); 
    Stream stream = rptH.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); 
    return File(stream, "application/pdf"); 
} 

TIA

उत्तर

6

एक FileStreamResult (जो क्या बनाई गई है) ने एक बयान का उपयोग करते समय WriteFile परिणाम निष्पादन के दौरान कहा जाता है में धारा गिर्द घूमती है। यह धारा को बंद और निपटान करेगा। बनाए गए स्ट्रीम के प्रकार के आधार पर यह वास्तव में नियंत्रक कार्रवाई में उपयोग कथन में उपयोग को बंद या लपेटने में त्रुटि उत्पन्न कर सकता है।

+0

उत्सुकता से, यह 'फ़ाइलस्ट्रीम' प्रकार को लपेटता है: '(फ़ाइलस्ट्रीम) का उपयोग करना। दुनिया में क्या चल रहा है? 'टाइप' डिस्पोजेबल है? –

+0

@ जेफ - असल में 'फाइलस्ट्रीम' एक ऐसी संपत्ति है जो फ़ाइलस्ट्रीम क्लास के समान ही होती है। – tvanfosson

+0

ओह ठीक है, मैं दुनिया में क्या सोच रहा था। यह टाइपफॉफ़ नहीं है (फाइलस्ट्रीम) - और संपत्ति लगभग 7 लाइन दूर है। अधिक कॉफ़ी पाने का समय डी: –

संबंधित मुद्दे