मेरे पास एक अनचाहे अपवाद हैंडलर है। यह एक अच्छा जीयूआई दिखाता है और उपयोगकर्ताओं को एक त्रुटि रिपोर्ट भेजने की अनुमति देता है। उपयोगकर्ता अपना नाम और फोन नंबर और चीजें भी छोड़ सकते हैं, और हमारा समर्थन विभाग उन्हें वापस बुलाता है। अच्छी तरह से काम करता है, अच्छा लग रहा है, ग्राहकों को कम गुस्सा आता है। सिद्धांत रूप में, वैसे भी।मेरे प्रोग्राम क्रैश होने के बाद मैं सभी धागे को कैसे निलंबित कर सकता हूं?
समस्या यह है कि मेरा एप्लिकेशन पृष्ठभूमि धागे का उपयोग करता है, और यदि कोई अपवाद फेंक दिया गया है, तो थ्रेड्स परवाह नहीं है, कहें, जीयूआई थ्रेड (जो समझ में आता है), और बस अपना काम जारी रखें। अंततः परिणामस्वरूप एक डब्लूईआर संवाद पॉप-अप होता है यदि उपयोगकर्ता मेरी कस्टम अपवाद हैंडलर विंडो को लंबे समय तक खुला रहता है, जिससे ऐसा लगता है कि त्रुटि हैंडलर स्वयं क्रैश हो गया है।
मुझे अपवाद हैंडलर के दायरे में थ्रेड ऑब्जेक्ट तक पहुंच नहीं है, इसलिए मैं उन्हें निलंबित नहीं कर सकता। दुनिया भर में थ्रेड ऑब्जेक्ट्स को बनाना एक समाधान नहीं है। मेरे अपवाद हैंडलर में Globals.Crashed = true;
जैसे कुछ का उपयोग करना है, और मेरे थ्रेड विधियों को प्रत्येक लूप पुनरावृत्ति पर उस संपत्ति की जांच करने के लिए है। सही नहीं है, लेकिन यह नुकसान को कम करता है।
क्या किसी को कम हैकी विधि पता है? क्या मेरा दृष्टिकोण गलत है? क्या मुझे ऐसा करना है जैसे WER करता है और एक बाहरी प्रोग्राम लॉन्च करता है जो मुख्य प्रोग्राम को निलंबित करता है और त्रुटि UI दिखाता है?
यदि वह चाल काफी अच्छी तरह से काम करती है, तो मैं इसके साथ रहूंगा। – FrustratedWithFormsDesigner