2013-01-05 10 views
7

मैं एक सी # प्रोजेक्ट पर काम कर रहा हूं और अनचाहे अपवाद घटना का उपयोग करना चाहता हूं ताकि मैं अपने प्रोजेक्ट में किसी भी अपवाद को याद कर सकूं (उम्मीद है कि एक ही पक्ष में कोई भी नहीं होगा)।AppDomain UnhandledException

मैं काफी साफ्टवेयर बना देता हूं इसलिए मैं कक्षा पुस्तकालय बनाना चाहता हूं कि मेरी सभी परियोजनाएं इसका उपयोग करेंगी, इसलिए मैं एक ऐसा कार्य करना चाहता हूं जो मेरे बिना सभी परियोजनाओं की शुरुआती चीजें करता है एक ही काम करने के लिए प्रत्येक प्रोजेक्ट में कोड कॉपी और पेस्ट करें।

अगर मैं बिना क्रिया का अपवाद घटना के बाद कोड

AppDomain currentDomain = AppDomain.CurrentDomain; 
      currentDomain.UnhandledException += new UnhandledExceptionEventHandler(currentDomain_UnhandledException); 

बिना क्रिया का अपवाद केवल वर्ग पुस्तकालय के भीतर से उपयोग किया जाएगा का उपयोग कर वर्ग पुस्तकालय में है या इस घटना संभाल भी हो जाएगा क्या मैं सोच रहा हूँ कक्षा पुस्तकालय के संदर्भ में किसी भी परियोजना से निष्कासित।

आपकी सहायता के लिए धन्यवाद।

उत्तर

5

मान लीजिए कि आपकी सभी परियोजनाएं एक ही एपडोमेन में चल रही हैं, यह सही तरीके से काम करेगी। हमारे पास एक सामान्य डीएलएल में समेकित यह सटीक कोड है जो कई अनुप्रयोगों के बीच साझा किया जाता है।

एक अतिरिक्त सुझाव: यदि इसका उपयोग विंडोज फॉर्म एप्लिकेशन में किया जाता है, तो आप शायद System.Windows.Forms.Application.ThreadException के लिए एक हैंडलर भी जोड़ना चाहते हैं। यह बैकस्टॉप के रूप में कार्य करता है, उदाहरण के लिए, कोई नियंत्रण ईवेंट में अपवाद हैंडलिंग जोड़ना भूल जाता है।

+0

आपकी मदद के लिए धन्यवाद। यह एक कंसोल ऐप के लिए है जिस पर मैं काम कर रहा हूं लेकिन मैं फॉर्म के लिए थ्रेडएक्सप्शन के बारे में नहीं बताऊंगा। क्या यह WPF ऐप्स या पुरानी शैली के विंडोज़ फॉर्मों के लिए भी मामला है – Boardy

1

एक असेंबली को एक अलग एप्लिकेशन डोमेन में लोड करना संभव है, लेकिन जब तक आप मौजूदा एप्लिकेशन डोमेन में असेंबली (जैसे कक्षा पुस्तकालय) लोड करते हैं, यह अपवाद को संभालेगा।

आवेदन डोमेन और विधानसभाओं के बीच संबंध:

http://technet.microsoft.com/en-us/subscriptions/index/43wc4hhs(v=vs.80).aspx

उदाहरण के लिए, Assembly.LoadFile() या Assembly.Load() वर्तमान एप्लिकेशन डोमेन में विधानसभा लोड होगा।

आपका कोड के साथ एक नई एप्लिकेशन डोमेन बनाने जा सकता है:

AppDomain.CreateDomain(..), तो यह इस डोमेन है, जो आपके कोड के द्वारा नियंत्रित नहीं किया जाएगा में विधानसभाओं लोड कर सकते हैं।

यदि आप अपनी परियोजना में पुस्तकालयों का संदर्भ देते हैं तो उन्हें वर्तमान ऐप डोमेन में लोड किया जाएगा।

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