मैं गुमनाम ईवेंट हैंडलर्स के बारे में एक नहीं बल्कि छोटे सवाल है:बेनामी घटना संचालकों और निपटान
इस कोड है कि मैं है:
public void AddTestControl(Control ctrl)
{
ctrl.Disposed += (o, e) => { RemoveTestControl(ctrl); };
ctrl.SomeEvent += _Control_SomeEvent;
}
public void RemoveTestControl(Control ctrl)
{
ctrl.SomeEvent -= _Control_SomeEvent;
}
ठीक ऊपर यह कोड है, या कोड होना चाहिए विस्थापित घटना हैंडलर को हटाने के लिए फिर से लिखा जाना चाहिए? कुछ इस तरह:
public void AddTestControl(Control ctrl)
{
ctrl.Disposed += _Control_Disposed;
ctrl.SomeEvent += _Control_SomeEvent;
}
public void RemoveTestControl(Control ctrl)
{
ctrl.Disposed -= _Control_Disposed;
ctrl.SomeEvent -= _Control_SomeEvent;
}
afaik कोई भी ईवेंट हैंडलर के निष्पादन आदेश का वादा नहीं करता है। – b0rg
लेकिन मेरा प्रश्न विवादित घटना के बारे में अधिक है। क्या मुझे इसे खुद को अलग करने की आवश्यकता है या पहला कोड नमूना ठीक है? – juFo
@juFo मान लीजिए कि आप जो कारण पूछते हैं वह है क्योंकि आप मेमोरी लीक के बारे में चिंतित हैं, तो ** नहीं, आपको ईवेंट हैंडलर को अलग करने की आवश्यकता नहीं है **। चूंकि 'नियंत्रण' ऑब्जेक्ट में 'पृष्ठ' या 'फॉर्म' का एक ही जीवनकाल होता है जिसमें ईवेंट हैंडलर होते हैं, वे एक साथ गुंजाइश से बाहर निकल जाएंगे। –