2009-06-23 5 views
7

हमने कुछ एक्सेल फ़ाइलों को पढ़ने के लिए एक्सेल इंटरऑप लाइब्रेरीज़ (माइक्रोसॉफ्ट.ऑफिस.इंटरोप.एक्ससेल) का उपयोग करने वाला एक एप्लीकेशन विकसित किया है।विजुअल स्टूडियो: डिबगिंग बंद होने पर क्लीन अप कोड निष्पादित करना

जब एप्लिकेशन में कोई समस्या होती है, तो ईवेंट अनुप्रयोग। थ्रेड अपवाद को संभाला जाता है, इसलिए संसाधन जारी किए जाते हैं (एक्सेल बंद है ...)।

समस्या यह है कि जब हम वीएस डीबगर का उपयोग करते हैं, अगर हम निष्पादन को रोकते हैं (क्योंकि प्रक्रिया अपवाद पर टूट जाती है, या ब्रेकपॉइंट, ऐसे कई कारण हैं जो हम ऐसा करेंगे), संसाधन नहीं हैं जारी किया गया और एक्सेल खुल गया। और निश्चित रूप से, अगली बार एप्लिकेशन लॉन्च हो गया है ... यह क्रैश हो जाता है क्योंकि फ़ाइल पर ताले हैं।

तो मैं डिबगर के साथ बंद होने पर भी Excel ऑब्जेक्ट्स को रिलीज़ करने के लिए एक तरीका ढूंढ रहा हूं।

कोई सुझाव?

उत्तर

14

आप एक मैक्रो लिखने के लिए डीटीई (विजुअलस्टूडियो ऑटोमेशन मॉडल) का उपयोग कर सकते हैं जो स्टॉप डीबग होने पर लागू किया जाएगा, नीचे विचार का एक स्निपेट है।

Private Sub DebuggerEvents_OnEnterBreakMode(
    ByVal Reason As EnvDTE.dbgEventReason, 
    ByRef ExecutionAction As EnvDTE.dbgExecutionAction) Handles DebuggerEvents.OnEnterBreakMode 
    If (Reason = dbgEventReason.dbgEventReasonStopDebugging) Then 
     // DO YOUR CLEAN UP CODE HERE 
    End If 
End Sub 
+0

अच्छा लगा। मेरे +1 –

+0

दिलचस्प हो जाता है। मैक्रोज़ का एक और अच्छा उपयोग। – RichardOD

+3

तो दुखी, वीएस 2012+ में कोई मैक्रोज़ नहीं। – roufamatic

1

दुर्भाग्य से ऐसा करने का कोई तरीका नहीं है। दृश्य स्टूडियो में स्टॉप बटन प्रक्रिया को मारता है, इसलिए इसे साफ करने का कोई मौका नहीं है।

आपकी समस्या के दौर के संभावित तरीके के रूप में (हालांकि बहुत अच्छा नहीं), आप एक क्लीनअप दिनचर्या लिख ​​सकते हैं और ऐप को रोकने से पहले इसे तुरंत विंडो से निष्पादित कर सकते हैं।

[संपादित करें: मुझे अनदेखा करें। यह जवाब गलत है। शै Erlichmen एक मैक्रो का उपयोग कर एक बेहतर समाधान के साथ आया है

+3

नेवर से नेवर –

1

एक संभावना यह एक शुद्ध .NET समाधान जैसे करने के लिए स्विच करने के लिए COM इंटरॉप के साथ जुड़े प्रदर्शन और विश्वसनीयता समस्याओं से दूर होने की है।

अस्वीकरण: मैं खुद SpreadsheetGear LLC

+0

अच्छा होगा लेकिन थोड़ा महंगा होगा क्योंकि हमें केवल एक्सेल फ़ाइल पढ़ने की आवश्यकता है :)। मैंने ओपन सोर्स सॉल्यूशंस (जैसे कोओग्रा http://koogra.sourceforge.net/) में देखा लेकिन यह हमारी एक्सएलएस फाइलों के साथ काम नहीं करता है। –

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