में आरएआईआई लागू करना मेरे पास एक इन्फोपाथ फॉर्म है जिसे मुझे सशर्त रूप से ऑनचेंज ईवेंट अक्षम करने की आवश्यकता है। चूंकि फॉर्म लोड होने के बाद ईवेंट हैंडलर को बाध्य करना संभव नहीं है, इसलिए मुझे वैश्विक काउंटर पर भरोसा करना पड़ता है जो इंगित करता है कि ऑनचेंज ईवेंट निष्पादित किया जाना चाहिए या नहीं। प्रत्येक ऑन चेंज ईवेंट के अंदर, मैं जांच करता हूं कि कोई क्रिया करने से पहले SuppressEventsCount == 0। कुछ फ़ंक्शन या किसी अन्य के निष्पादन के दौरान ईवेंट को दबाने के लिए, मैं बस SuppressEventsCount ++ सेट करता हूं, और फिर जब फ़ंक्शन निकलता है। ऐसा करने में सबसे बड़ी समस्या यह है कि यह अपवाद सुरक्षित नहीं है। इसलिए मैं रैप करने के लिए SuppressEvents एक वर्ग जो IDisposableसी #
using(SuppressEvents s = new SuppressEvents()){
// OnChange events fired here are ignored
} // OnChange events enabled again
यह काम कर रहा है लागू करता है में मुकाबला उज्जवल विचार था, लेकिन यह अभी भी एक सी ++ समाधान जो "का उपयोग" के उपयोग की आवश्यकता नहीं है के रूप में के रूप में आदर्श नहीं है बिल्कुल निर्देश
- उत्प्रेरक एक नाशक या कुछ समारोह पल एक वस्तु क्षेत्र से बाहर चला जाता है, या
- रोकें SuppressEvents एक के बाहर initialised होने से आपत्ति निर्देश "का उपयोग":
वहाँ किसी तरह या तो है पूरी तरह से
यह प्रश्न देखें: http://stackoverflow.com/q/2101524/6345 (क्या यह अपवाद सुरक्षा के लिए "स्कॉप्ड व्यवहार" प्राप्त करने के साधन के रूप में IDISposable और "उपयोग" का उपयोग करने के लिए अपमानजनक है?) –