एक संवाद के बिना एक .NET WinForms ऐप को चुपचाप बंद करने का कारण क्या हो सकता है?

हमारे WinForms एप्लिकेशन को कभी-कभी अपने आप बंद करने की सूचना दी गई है। यह न तो हमारी खुद की क्रैश त्रुटि संवाद संवाद दिखाता है और न ही विंडोज़ 'त्रुटि संवाद संवाद, यह सिर्फ बंद हो जाता है और चला जाता है, अक्सर जब व्यक्ति एएफके था और आवेदन के साथ कुछ भी नहीं कर रहा था। ऐसा लगता है कि यह एक अर्द्ध दुर्लभ घटना है, शायद एक महीने में 2-3 बार, और यह एक से अधिक व्यक्तियों के साथ हुआ है। मुझे पता नहीं है कि रेपो केस प्राप्त करने के साथ कहां से शुरू करना है या कहां से इसे ट्रैक करना शुरू करना है।

सी# .NET 2.0 रिपोर्ट किए गए मामले Win XP पर हैं

क्या किसी के भी पास कोई सुझाव है?

3

3 उत्तर

असीमित रिकर्सन के कारण स्टैक ओवरफ़्लो कोई चेतावनी के साथ छोड़ने वाले ऐप्स का एक बड़ा कारण है। जब तक आप चुप बाहर निकलने के लिए कुछ जानबूझकर नहीं कर लेते हैं, तब तक अनचाहे अपवाद (स्टैक ओवरफ़्लो के अलावा) आमतौर पर ऐप छोड़ने से पहले किसी प्रकार का यूआई प्रदर्शित करेगा। इस नियम के लिए स्टैक ओवरफ़्लो सबसे आम अपवाद (ओह, माफ करना) है।

बेशक, अप्रबंधित या असुरक्षित कोड से, चुपचाप निकालने के लिए रनटाइम को सही तरीके से परेशान करना लगभग निश्चित रूप से संभव है।

उपकरण के बारे में सुझाव और विंडोज इवेंट लॉग को देखकर भी अच्छे हैं।

4
जोड़ा
ऐसा लगता है कि यह एक मौन दुर्घटना अपराधी है। धन्यवाद
जोड़ा लेखक Davy8, स्रोत

अपवाद एक ऐप को "गायब" करने का कारण बनेंगे। यह देखने के लिए इवेंट लॉग जांचें कि क्या कुछ भी था या नहीं।

विंडो प्रबंधक गायब होने पर प्रक्रिया अभी भी मौजूद है या नहीं, यह देखने के लिए कार्य प्रबंधक जांचें। मैंने एक्सप्लोरर क्रैश किया है और खिड़की को फिर से चलाने में असफल रहा जब तक कि यह Alt-Tabbed या स्विच-टू (टास्क मैनेजर से) नहीं था।

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

3
जोड़ा
ऐप अभी तक "जंगली" में नहीं है, इसलिए मैं इन उपयोगकर्ताओं को विश्वास करने के लिए पर्याप्त रूप से जानता हूं कि उन्होंने स्वयं को ऐप बंद नहीं किया है (यह सुविधाजनक भूलने के लिए थोड़ा सा होता है)
जोड़ा लेखक Davy8, स्रोत
यदि ऐप पहले से ही एक और प्रक्रिया है, तो ऐप एक नया उदाहरण नहीं बनाता है, और वे ऐप को फिर से खोलने में सक्षम थे, इसलिए यह वास्तव में चुपचाप दुर्घटनाग्रस्त हो गया, लेकिन आम तौर पर वे जांच करने के लिए अच्छी चीजें हैं।
जोड़ा लेखक Davy8, स्रोत

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

0
जोड़ा