मेरे पास एक जीयूआई ऐप है जो एक सेंसर से जुड़ता है, डेटा एकत्र करता है और इसे BackgroundWorker
धागे का उपयोग करके पृष्ठभूमि में संसाधित करता है।'डिस्कनेक्ट किए गए कॉन्टेक्स्ट' क्रैश को डीबग और हल कैसे करें?
जैसा कि यह खड़ा है कि मैं ProgressChanged
का उपयोग कर जीयूआई में डेटा पोस्ट कर रहा हूं जो शुरू करने के लिए अच्छी तरह से काम कर रहा था। मैंने बाद में डेटा दरों में वृद्धि की है और एक समस्या की खोज की है; यदि सॉफ़्टवेयर को कुछ मिनटों तक चलाने के लिए छोड़ा गया है, तो प्रोसेसर उपयोग की मात्रा तब तक बढ़ जाती है जब तक कि यह मेरी मशीन पर दोनों कोरों पर 100% तक पहुंच जाती है और उस बिंदु पर, मुझे एक त्रुटि मिलती है जो पढ़ता है:
प्रबंधित डिबगिंग सहायक 'डिस्कनेक्टेड कॉन्टेक्स्ट' को 'myapp.exe' में कोई समस्या मिली है। अतिरिक्त जानकारी: संदर्भ 0xe2ba0 डिस्कनेक्ट हो गया है। वर्तमान संदर्भ से इंटरफेस को जारी करना (संदर्भ 0xe2d10)। इससे भ्रष्टाचार या डेटा हानि हो सकती है।
मैंने वेब के चारों ओर कुछ सामान पढ़ा है जो बताता है कि यह तब हो सकता है जब कोई GUI ऐप पर्याप्त तेज़ संदेशों को पंप करने में असमर्थ हो। मैंने देखा है कि अगर मैं खिड़की का तेजी से आकार बदलता हूं (यानी एक लोड अधिक संदेश पंप) जो मुझे लगता है सिद्धांत का समर्थन करता है तो मैं एक ही दुर्घटना को तेज कर सकता हूं?
तो सवाल यहां हैं:
- किसी को भी संदेश पंप के बारे में मेरी परिकल्पना के साथ सहमत हैं या नहीं?
- क्या कोई और स्पष्टीकरण है?
- क्या कोई तरीका है कि मैं इसे साबित कर सकता हूं (शायद कतार में संदेशों की संख्या देखें)?
- क्या ये सभी खराब कोड गंध आते हैं जो सुझाव देते हैं कि मैं इस गलत तरीके से जा रहा हूं?
कोई सलाह बहुत आभारी रूप से प्राप्त की जाएगी।
मैंने एमटीएटीएचड सेटिंग की कोशिश की जो केवल कभी-कभी दुर्घटना को जोड़ना प्रतीत होता था। मैंने इसके बजाय एक queuenig तंत्र को अपनाया है और डिस्प्ले कोड के हिस्से में एक बग फॉनड किया है जो 'RichTextBoxControl' को भरने वाला था। उन दोनों के बीच, ऐसा लगता है कि मैंने समस्या हल कर ली है। सुझावों के लिए धन्यवाद। –
मैंने देखा है कि यह कुछ और बार होता है और यह डेटा निर्माता थ्रेड से इसके श्रोताओं तक बहुत से 'प्रोग्रेस चेंज किए गए' अनुरोध भेजने की कोशिश करके निश्चित रूप से ट्रिगर होता है। –