मैं एक ऐसे एप्लिकेशन पर काम कर रहा हूं जो रिपोर्टिंग के लिए क्रिस्टल रिपोर्ट का उपयोग करता है। यह एक रिपोर्ट डॉक्यूमेंट ऑब्जेक्ट में एक दी गई रिपोर्ट खोलता है, जो करता है उसे करता है और फिर रिपोर्ट बंद कर देता है।क्रिस्टल रिपोर्ट्स रिपोर्ट डॉक्यूमेंट ऑब्जेक्ट द्वारा उपयोग किए जाने वाले संसाधनों को साफ़ करने का सबसे अच्छा तरीका क्या है?
using (var report = OpenReport(reportSourceInfo))
{
// Do stuff with the report
report.Close();
}
OpenReport विधि स्रोत फ़ाइल से कुछ सत्यापन करता है और एक खुले ReportDocument वस्तु देता है।
परीक्षण से पता चला है कि यह कोड करता है जो इसका मतलब है और इसमें कोई समस्या नहीं है।
CA2202: Microsoft.Usage: ऑब्जेक्ट 'रिपोर्ट' हो सकता है समस्या मैं वास्तव में के बारे में सलाह के बाद कर रहा हूँ जब मैं एक कोड विश्लेषण (CA) रिपोर्टिंग परियोजना के निर्माण करते हैं, मैं निम्नलिखित सीए संदेश मिलता है विधि 'CrystalReportingProvider.ReportExecute (ReportSourceInformation)' में एक से अधिक बार निपटान किया गया। एक सिस्टम उत्पन्न करने से बचने के लिए। ऑब्जेक्ट डिस्प्ले अपवाद जिसे आप कॉल नहीं करना चाहिए किसी ऑब्जेक्ट पर एक से अधिक बार निपटाना।
अब स्पष्ट रूप से मैं चारों ओर कोड बदल सकता हूं इसलिए मुझे यह सीए चेतावनी नहीं मिलती है, लेकिन मेरा सवाल है?
क्या क्रिस्टल रिपोर्ट रिपोर्ट Document.Close() विधि संसाधन सफाई को ठीक से संभालने के लिए सब कुछ करती है? संदेश इंगित करता है कि बंद विधि निपटान विधि को कॉल करती है, लेकिन यह सही नहीं लगती है।
किसी भी सलाह की सराहना की जाएगी।
यह कोडिंग सम्मेलन के चेहरे पर उड़ने लगता है कि यदि आप किसी ऑब्जेक्ट के साथ समाप्त हो गए हैं जिसका प्रकार IDISposable लागू करता है तो आपको इसे निपटान() पर कॉल करना चाहिए, वैकल्पिक रूप से आपको यह – Fooksie
करने के लिए उपयोग करने वाले ब्लॉक का उपयोग करना चाहिए। असेंबली और पाया कि बंद निपटान कॉल नहीं करता है। – LostInComputer