2011-06-09 10 views
5

मैं AppDomain.CurrentDomain.UnhandledException ईवेंट की सदस्यता लेना चाहता हूं ताकि किसी भी त्रुटि को पकड़ने के लिए मैं एक नया डिज़ाइन पैटर्न आज़मा रहा हूं जहां मैं कोशिश नहीं करना चाहता हर घटना पर।क्या मैं एक कक्षा लाइब्रेरी में AppDomain.CurrentDomain.UnhandledException में एक हैंडलर जोड़ सकता हूं

आमतौर पर एक जीत फॉर्म ऐप में एक मुख्य प्रवेश बिंदु होता है, लेकिन यह एक क्लास लाइब्रेरी है जिसे किसी अन्य एप्लिकेशन द्वारा बुलाया जाता है।

क्या कक्षा पुस्तकालय में कोई मुख्य प्रवेश बिंदु है जहां मैं इस घटना को जोड़ सकता हूं, या क्या यह कक्षा पुस्तकालय में संभव नहीं है जब तक कि मुझे यकीन नहीं है कि किसी और चीज से पहले एक विधि बुलाया जाएगा?

+0

@ जोड्रेल - धन्यवाद, लेकिन क्या मैं अपनी असेंबली में एक स्थान को परिभाषित करने के लिए [STAThread] विशेषता का उपयोग कर सकता हूं जो स्वचालित रूप से कॉल हो जाएगा। यह निष्पादन योग्य नहीं है, और कॉलिंग एप्लिकेशन किसी भी क्रम में किसी भी फॉर्म को तुरंत चालू कर सकता है। यही कारण है कि ऐसा होने से पहले मुझे इस घटना की सदस्यता लेनी होगी – WraithNath

+0

नेट एप्स – Jodrell

+1

के लिए हुकिंग जैसी कुछ चीजें आप इन पंक्तियों के साथ कुछ कर सकते हैं http://www.codingthewheel.com/archives/how-to-inject -ए-प्रबंधित-असेंबली-डीएल – Jodrell

उत्तर

1

नहीं, कक्षा पुस्तकालयों में मुख्य प्रवेश बिंदु नहीं है। यदि आपको लगता है कि आपको एक की आवश्यकता है, तो आप अवधारणात्मक रूप से अपने सार्वजनिक एपीआई सतह क्षेत्र के माध्यम से एक वर्चुअल रूप से बना सकते हैं। दूसरे शब्दों में, सीमित करें कि कौन सी वस्तुएं सार्वजनिक हैं और उन सार्वजनिक वस्तुओं में यह सुनिश्चित करें कि कुछ बिंदु पर कॉल किया जाता है। कुछ भी करने से पहले अपनी पुस्तकालय को स्थापित करने के लिए किसी प्रकार की फैक्ट्री कॉल की आवश्यकता के चरम पर ले जाया जा सकता है।

+0

धन्यवाद, मैंने जो सोचा था। मैं उम्मीद कर रहा था कि कुछ प्रकार की घटना होगी जब मैं असेंबली को लोड कर लेता हूं। दुर्भाग्य से मैं कॉलिंग एप्लिकेशन से कुछ भी हुक नहीं कर सकता। ऐसा लगता है कि इसे मेरे अगले निष्पादन योग्य तक इंतजार करना होगा – WraithNath

0
// Set the unhandled exception mode to force errors to go through our handler. 
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 

// Add the event handler for handling thread exceptions to the event. 
AppDomain.CurrentDomain.UnhandledException += 
    new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 

Brian Dishaw

के लिए धन्यवाद जाहिर है यह आप हैंडलर बताए, app.config में एक निशान श्रोता assingning आला की कुछ गैर कथात्मक रास्ता नहीं देता है लेकिन, कि मुझे एक विचार देता है।

आप अपना स्वयं का कॉन्फ़िगरेशन अनुभाग लिख सकते हैं जो इस कोड को निष्पादित करेगा। फिर जब कॉन्फ़िगर लोड हो जाता है तो आप ईवेंट हैंडलर असाइन कर सकते हैं, मुझे यह करने के लिए कुछ लिंक मिलेंगे ...

हालांकि, आपकी कॉन्फ़िगरेशन मुख्य ऐप में मौजूद होगी, इसलिए शायद यह सही नहीं है ।

EDIT क्षमा करें, मुझे नहीं लगता कि किसी प्रकार के आईओसी ढांचे के बिना ऐसा करने का कोई तरीका है, और आपकी कक्षा को और क्या लोड होगा। केवल एक ही विकल्प जो मैं सोच सकता हूं, मुख्य अनुप्रयोग में कुछ प्रकार के बदलाव की आवश्यकता है।

मुझे गलत होने में दिलचस्पी है।

+0

धन्यवाद - मुझे पहले से ही अनचाहे अपवाद ईवेंट के बारे में पता है (यह प्रश्न के शीर्षक में है)। मेरा सवाल यह है कि क्या क्लास लाइब्रेरी में एक प्रविष्टि बिंदु है जहां मैं किसी और को बुलाए जाने से पहले इसे हुक कर सकता हूं। – WraithNath

+0

मुझे अब आपका अंक मिल गया है, और मैंने थोड़ा अतिरिक्त जोड़ा है, – Jodrell

+0

आने में असफल रहा है, मैं असफल होने वाली किसी चीज के बारे में सोच नहीं सकता। – Jodrell

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