मैं "माइक्रोसॉफ्ट मिनिमल नियम" कोड विश्लेषण सेट के साथ अपने प्रोजेक्ट का निर्माण कर रहा हूँ और यह मेरे इस पद्धति पर CA2000 देता है:इस विधि क्यों कारण नहीं संहिता विश्लेषण त्रुटि CA2000: निपटान() कॉल
private Timer InitializeTimer(double intervalInSeconds)
{
Timer timer = null;
try
{
timer = new Timer { Interval = intervalInSeconds * 1000, Enabled = true };
timer.Elapsed += timer_Elapsed;
timer.Start();
}
catch
{
if (timer != null)
{
timer.Dispose();
}
}
return timer;
}
यह विधि केवल सेकंड में अंतराल से एक नया System.Timers.Timer
बनाता है। मेरे पास तीन ऐसे टाइमर चल रहे हैं (प्रत्येक सेकेंड के लिए एक, एक मिनट और हर आधे घंटे)। हो सकता है कि एक टाइमर होना बेहतर हो और विलुप्त होने वाले ईवेंट हैंडलर में जांच करें कि क्या डेढ़ घंटे बीत चुका है, लेकिन मुझे नहीं पता, यह इस समय आसान है, यह विरासत कोड है और मैं सबकुछ तोड़ना नहीं चाहता अभी तक।
इस विधि को पकड़ने में मुझे बदनाम
Warning 21 CA2000 : Microsoft.Reliability : In method 'TimerManager.InitializeTimer(double)', call System.IDisposable.Dispose on object '<>g__initLocal0' before all references to it are out of scope.
अब मैं बोल रहा हूँ निपटान देता है और यह पर्याप्त होगा सोचा है? मैं कक्षा के अपने आईडीएसओएसपीबल कार्यान्वयन में सभी टाइमर का निपटान भी कर रहा हूं।
मुझे यहां क्या याद आ रही है?
ऑब्जेक्ट प्रारंभकर्ता वाक्य रचना बाहर ले बेहतर है - कि क्या चेतावनी (के बाद से वस्तु मौजूद है, का निर्माण किया ट्रिगर है, लेकिन प्रारंभकर्ता द्वारा चलाए जाने पर 'टाइमर' को असाइन नहीं किया गया है। मैं डुप्लिकेट प्रश्न ढूंढने की कोशिश कर रहा हूं जो इस से संबंधित है। –
[डुप्लिकेट का उपयोग करने में ऑब्जेक्ट प्रारंभकर्ता कोड विश्लेषण चेतावनी CA2000 उत्पन्न करता है] (http://stackoverflow.com/प्रश्न/3514902/ऑब्जेक्ट-प्रारंभकर्ता-इन-उपयोग-ब्लॉक-जनरेट-कोड-विश्लेषण-चेतावनी-ca2000) –
ठीक है, शुरुआती सिंटैक्स को एक गूंगा उपकरण के लिए फेंक न दें। चेतावनी फर्जी है, वहां है स्टार्ट() को तब तक निपटाने के लिए कुछ भी नहीं कहा जाता है। अपवादों को निगलने और एक निस्तारण वस्तु को वापस करने, अब * वह * शिकायत करने के लिए कुछ होगा। –