.net - Async/Await and Cross Thread Exceptions -
मेरे पास एक टेक्स्ट बॉक्स के साथ एक संवाद प्रपत्र है जो टेक्स्ट चेंन्ज ईवेंट को सक्रिय करता है। जब दर्ज की गई पाठ की लंबाई 1 से अधिक है, तो मिलान डेटा प्राप्त करने के लिए वेब सेवा का अनुरोध करता है। वेब सेवा एक TaskCompletionSource का उपयोग कर रही है
जब कोई वेब सेवा कॉल की आवश्यकता नहीं है, तो मैं देख सकता हूँ कि टेक्स्ट-चंचल विधि उसी धागे पर बुलाया जाता है, जिस पद्धति ने संवाद खोला था। इसी तरह मुझे कार्यकुशलता स्रोत का उपयोग करने वाले परिणाम मिलते हैं। मेरी वेब सेवा कॉल पर परिणाम, फिर से एक ही धागा उपयोग किया जाता है।
हालांकि, अगर मैं टेक्स्ट-चंचल पद्धति को 'एसिंक' होने के लिए बदलता हूं और वेब सेवा कॉल के साथ 'इंतजार' का उपयोग करता हूं, तो मुझे अचानक टेक्स्ट-चेंग्ड विधि को अलग थ्रेड (विज़ुअल स्टूडियो समांतर स्टैक व्यूअर का उपयोग करके) और संवाद में एक नियंत्रण को अद्यतन करने के लिए मेरे कॉल को क्रॉस-थ्रेड अपवाद के साथ विफल रहता है
मैं किसी भी कार्य का उपयोग नहीं कर रहा हूँ। विधि श्रृंखला में चलाएं। मुझे समझ में नहीं आ रहा है कि क्यों एक नया धागा शुरू हुआ है जिसके परिणामस्वरूप मेरे संवाद नियंत्रणों का उपयोग करने की आवश्यकता होती है। कोई भी यह क्यों हो रहा है और अगर कोई फिक्स है पर कोई प्रकाश डाला सकता है।
बहुत डीबगिंग के बाद पता चला कि जिस पद्धति ने डायलॉग बॉक्स बनाया था वह डायलॉग बॉक्स पर एक async विधि को बुला रहा था और कॉन्फ़िगरेशन (झूठी) कॉन्फ़िगर किया गया था। इसके कारण एक नया थ्रेड बनाया जा रहा था। मुझे एक नया धागा मिल गया है यदि मैंने एक पाठ विन्हित घटना के भीतर वेब सेवा कॉल में एक कॉन्फ़िगरएवाइट (गलत) जोड़ दिया है।
इस प्रकार मुझे लगता है कि मुझे सावधान रहने की आवश्यकता है जहां कॉन्फ़िगरएवाइट (गलत) उपयोग किया जाता है इस स्वागत पर कोई संकेत या सुझाव।
Comments
Post a Comment