में अनचाहे अपवाद, मेरे WinForms ऐप डेटाबेस से जानकारी पुनर्प्राप्त करने के लिए BackgroundWorker ऑब्जेक्ट्स का उपयोग करता है। मैं BackgroundWorker का उपयोग कर रहा हूं क्योंकि यह यूआई को लंबे समय से चलने वाले डेटाबेस प्रश्नों के दौरान अनब्लॉक करने की अनुमति देता है और यह मेरे लिए थ्रेडिंग मॉडल को सरल बनाता है।पृष्ठभूमिवर्कर
मुझे इनमें से कुछ पृष्ठभूमि धागे में कभी-कभी डेटाबेस अपवाद प्राप्त हो रहा है, और मैंने डिबगिंग के दौरान कार्यकर्ता थ्रेड में इनमें से कम से कम अपवादों को देखा है। मुझे पूरा विश्वास है कि ये अपवाद टाइमआउट हैं जो मुझे लगता है कि समय-समय पर अपेक्षा करना उचित है।
मेरा प्रश्न यह है कि क्या होता है जब इन पृष्ठभूमि कार्यकर्ता धागे में से एक में एक अनचाहे अपवाद होता है।
मुझे नहीं लगता कि मैं किसी अन्य धागे में अपवाद पकड़ सकता हूं, लेकिन क्या मैं अपने वर्कर पूर्ण विधि को निष्पादित करने की अपेक्षा कर सकता हूं? क्या पृष्ठभूमिवर्कर की कोई संपत्ति या विधि अपवादों के लिए पूछताछ कर सकती है?
यह ऐसा करेगा। बेशक, आप हमेशा अपने DoWork विधि में अपवाद पकड़ सकते हैं, और तदनुसार प्रतिक्रिया दे सकते हैं (यदि आप UI को अपडेट करने जा रहे हैं तो Control.Invoke का उपयोग करना याद रखें)। लेकिन RunWorker पूर्ण वास्तव में सरल है। –
मुझे यह समाधान मिल रहा है। मेरा रनवर्कर पूर्ण नहीं होता है जब मैं बस नई अपवाद() को फेंक देता हूं लेकिन अनचाहे अपवाद उठाया जाता है। DoWork में पकड़ असली जवाब नहीं है। मेरे BackgroundWorker में कुछ गलत होना चाहिए। – CallMeLaNN
मैंने पिछले सात घंटों में यह पता लगाने की कोशिश की है कि मेरा ऐप क्यों नहीं चलेगा और बस बाहर निकल जाएगा, और सब कुछ क्योंकि पृष्ठभूमिवर्कर में एक त्रुटि हुई है जिसे सही तरीके से पकड़ा नहीं जा रहा था। आपको +1 और मुझे लगता है कि आप एक बियर के लायक भी हैं :-) – EvilDr