2010-06-03 12 views

उत्तर

18

यह है कि आप विचार

में रखना चाहिए से अपने ईवेंट हैंडलर को रोकने के लिए MSDN documentation से महत्वपूर्ण हिस्सा जब घटना उठाया है लागू किया जा रहा है, बस घटना से सदस्यता समाप्त। संसाधन लीक को रोकने के लिए, ग्राहक ऑब्जेक्ट का निपटान करने से पहले ईवेंट से सदस्यता रद्द करना महत्वपूर्ण है। जब तक आप एक घटना से सदस्यता समाप्त , बहुस्त्र्पीय प्रतिनिधि है कि प्रकाशन वस्तु में घटना के पीछे भी प्रतिनिधि के लिए एक संदर्भ कि समाहित ग्राहक के घटना हैंडलर है। जब तक प्रकाशन ऑब्जेक्ट उस संदर्भ को धारण करता है, तो आपके ग्राहक ऑब्जेक्ट कचरा नहीं होगा एकत्रित किया जाएगा।

3

यह निर्भर करता है कि ग्राहक और प्रकाशक कितने समय तक रहते हैं। यहां समस्या के बारे में गहराई से आलेख है और इसे हल करने के तरीके पर कई दृष्टिकोण यहां दिए गए हैं: Solving the Problem with Events: Weak Event Handlers

2

ईवेंट से सदस्यता समाप्त करना महत्वपूर्ण है। यदि आप नहीं करते हैं, तो ग्राहक कचरा नहीं हो सकता है - संक्षेप में - एक स्मृति रिसाव।

http://developers.slashdot.org/article.pl?sid=07/11/17/0552247

इसके अलावा, यह प्रदर्शन समस्याओं को जन्म दे सकता है के रूप में ईवेंट हैंडलर भले ही यह नहीं कर रहा है के नाम से जाना जारी रहेगा: यहां आप सदस्यता समाप्त नहीं है में पड़ सकते हैं समस्याओं का एक अच्छा उदाहरण है अब आपके लिए कुछ भी उपयोगी है।

दूसरी तरफ, यदि आप प्रोग्राम के निष्पादन को समाप्त कर रहे हैं, तो घटनाओं से सदस्यता समाप्त करने का कोई कारण नहीं है। यह निश्चित रूप से अनिवार्य नहीं है, और मुझे इसकी अनुशंसा करने का कोई कारण नहीं दिख रहा है।

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