मेरे पास एक सिल्वरलाइट 2 एप्लिकेशन है जो डब्ल्यूसीएफ सेवा का उपभोग कर रहा है। इस प्रकार, यह सेवा के तरीकों के लिए सभी कॉल के लिए एसिंक्रोनस कॉलबैक का उपयोग करता है। यदि सेवा चालू नहीं हो रही है, या यह इन कॉलों में से किसी एक के दौरान या उसके दौरान क्रैश हो जाती है, या नेटवर्क नीचे जाती है, तो एक अपवाद उत्पन्न होता है जैसा आप उम्मीद करेंगे। समस्या यह है कि, मुझे नहीं पता कि इस अपवाद को कैसे पकड़ें।सिल्वरलाइट में डब्ल्यूसीएफ अपवाद को पकड़ने का सबसे अच्छा तरीका?
क्योंकि यह एक अतुल्यकालिक कॉल है, मैं लपेट नहीं कर सकता मेरी आज़माएं/कैच ब्लॉक के साथ कॉल शुरू करते हैं और यह एक अपवाद के बाद कार्यक्रम उस बिंदु से पर ले जाया गया है होता है कि लेने के लिए है।
क्योंकि सेवा प्रॉक्सी स्वचालित रूप से जेनरेट की जाती है, इसलिए मैं एंड्रॉवोक (जहां अपवाद वास्तव में दिखाई देता है) को प्रत्येक जेनरेट किए गए फ़ंक्शन पर एक कोशिश/पकड़ ब्लॉक नहीं डाल सकता है। इन जेनरेट किए गए कार्यों को कॉल स्टैक में बाहरी कोड से भी घिरा हुआ है, इसलिए स्टैक में कहीं भी कोशिश करने/पकड़ने के लिए कहीं और नहीं है।
मैं अपने कॉलबैक फ़ंक्शंस में कोशिश/पकड़ नहीं डाल सकता, क्योंकि अपवाद होने से पहले अपवाद होता है।
मेरे App.xaml.cs में एक एप्लिकेशन_उंहैंडेड एक्सेप्शन फ़ंक्शन है, जो सभी अनचाहे अपवादों को कैप्चर करता है। मैं इसका इस्तेमाल कर सकता था, लेकिन ऐसा करने के लिए यह एक गन्दा तरीका लगता है। मैं वास्तव में अप्रत्याशित त्रुटियों (उर्फ बग) के लिए इस फ़ंक्शन को आरक्षित करता हूं और प्रत्येक परिस्थिति के लिए इस फ़ंक्शन में कोड के साथ समाप्त नहीं होता जिसे मैं किसी विशिष्ट तरीके से सौदा करना चाहता हूं।
क्या मुझे एक स्पष्ट समाधान याद आ रहा है? या मैं Application_UnhandledException का उपयोग कर अटक गया हूँ?
[संपादित करें]
जैसा कि नीचे बताया गया है, त्रुटि संपत्ति ठीक वही है जो मैं ढूंढ रहा था। मुझे लूप के लिए फेंकने वाला क्या है कि तथ्य यह है कि अपवाद फेंक दिया गया है और यह बेकार प्रतीत होता है, फिर भी निष्पादन जारी रखने में सक्षम है। यह Application_UnhandledException ईवेंट को ट्रिगर करता है और निष्पादन को तोड़ने के लिए VS2008 का कारण बनता है, लेकिन डीबगर में जारी रखने से निष्पादन जारी रहता है। यह वास्तव में एक समस्या नहीं है, यह सिर्फ अजीब लगता है।
बस स्पष्ट करने के लिए, "सेवा विधि कॉलबैक" का अर्थ विधि पूर्ण ईवेंट है, जो कॉलबैक नहीं है। कॉलबैक का उपयोग एपीएम के साथ किया जाता है, जबकि सिल्वरलाइट ईएपी का उपयोग करता है। –
सहमत हुए। तदनुसार अपडेट किया गया। – dcstraw