2011-05-31 7 views
10

कुछ वापस कहानी:विंडोज फॉर्म्स ComboBox रुक-रुक कर System.AccessViolationException के कारण

मैं दोनों stackoverflow और गूगल खोज की है इस विशेष अपवाद के मूल पता लगाने की।

हमारे पास एक विंडोज फॉर्म (सी #, .NET 2.0) एप्लिकेशन है जो कभी-कभी सिस्टम को फेंक देगा। एक्सेस अपोलेशन अपवाद (नीचे स्टैक ट्रेस)। अपवाद विंडोज एक्सपी (एसपी 3) और विंडोज विस्टा (एसपी 2) दोनों पर हुआ है। उपयोगकर्ता इनपुट से, हमने पिन किया है कि अपवाद तब होता है जब कॉम्बोबॉक्स का चयनित इंडेक्स बदल जाता है।

कॉम्बोबॉक्स एक मानक विंडोज फॉर्म घटक है, और यह कस्टम नियंत्रण में निहित है जो System.Windows.Forms.UserControl प्राप्त करता है।

मेरा मुख्य प्रश्न यह है:

इस अपवाद कहाँ से आती है?

  • क्या यह .NET ढांचे में कुछ आंतरिक बग से है?
  • क्या यह कोड हो सकता है जो SelectedIndexChanged ईवेंट पर भेजा गया है जो इसका कारण बनता है? stackoverflow पर

संबंधित विषय:

  • finding the cause of System.AccessViolationException - कहा गया है कि इस अपवाद एक बिना क्रिया का अपवाद के बराबर है, केवल कि यह .NET रनटाइम के बजाय ओएस द्वारा पकड़ लिया गया।
  • Can a System.AccessViolationException happen because of faulty RAM? - अपराधी के रूप में दोषपूर्ण रैम को समझता है। हालांकि, संभव है, मुझे यह बहुत ही व्यावहारिक नहीं लगता है क्योंकि यह हाल ही में कई अलग-अलग मशीनों पर हुआ है। उनमें से सभी की दोषपूर्ण रैम की संभावना कम है।

स्टैक ट्रेस: ​​

Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 
Type: System.AccessViolationException 

    at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam) 
    at System.Windows.Forms.NativeWindow.DefWndProc(Message& m) 
    at System.Windows.Forms.Control.DefWndProc(Message& m) 
    at System.Windows.Forms.Control.WmCommand(Message& m) 
    at System.Windows.Forms.Control.WndProc(Message& m) 
    at System.Windows.Forms.ComboBox.WndProc(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 
    at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 
    at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) 

उत्तर

1

मैं इन समस्याओं को भी था, जिस तरह से वापस जब मैं .net 2.0 WinForms का इस्तेमाल किया। मुझे याद है कि माइक्रोसॉफ्ट ने इसके लिए एक हॉटफिक्स जारी किया है। मैंने इसे गुगल किया और इन दोनों को पाया। आप उन्हें आजमा सकते हैं।

http://support.microsoft.com/kb/923028

http://support.microsoft.com/kb/971030

इसके अलावा, आप .NET 2.0 के लिए सभी सेवा पैक स्थापित किया था?

+0

उत्तर @rewinder के लिए धन्यवाद। दूसरा लिंक वास्तव में ब्याज का हो सकता है।हालांकि हॉटफिक्सेस/सर्विस पैक लागू करना कुछ ऐसा है जो हम यथासंभव लंबे समय तक टालना चाहते हैं, जिसमें सैकड़ों मशीनों पर एप्लिकेशन इंस्टॉल किया गया है। मैं वर्तमान में जांच कर रहा हूं कि क्या combobox बदल गया है, जबकि GUI-thread इस पर कुछ काम करता है - एक अफवाह यह कहती है कि कॉम्बोबॉक्स का अंतर्निहित कार्यान्वयन पूरी तरह से थ्रेड सुरक्षित नहीं है। – Christoffer

+0

@ क्रिस्टोफर: ठीक है। खैर, अगर आपको कुछ मिल जाए तो मुझे बताएं। –

+1

माइक्रोसॉफ्ट समर्थन पर एक और कुछ हद तक संबंधित विषय मिला: http://support.microsoft.com/kb/952544 लेकिन मैं किसी भी स्वत: पूर्णता सुविधाओं का उपयोग नहीं कर रहा हूं। हालांकि, आइटम्स संग्रह ऑनकेडाउन या ऑन सिलेक्टेड इंडेक्स चेंज में आइटम जोड़ा जा सकता है। मुझे अभी तक पता नहीं है अगर इससे समस्या हो सकती है, तो मैं अपनी जांच जारी रखूंगा। – Christoffer

-1

इसे स्मृति अधिभारित करने का मौका न दें, अपने सभी नए और अप्रयुक्त वस्तुओं/नियंत्रणों का निपटान न करें आमतौर पर थ्रेड ऑपरेशंस के दौरान किसी सूची बॉक्स में ऑब्जेक्ट्स को जोड़ें/हटाएं।

यदि आप स्मृति को साफ़ नहीं करते हैं तो जीडीआई समस्याएं होती हैं।

कम्बोबॉक्स अपवाद होते हैं, इसमें चयनितता से संबंधित कुछ हो सकता है, चाहे उस आइटम में टेक्स्ट या पूर्णांक संग्रहीत हो। टेक्स्ट टेक्स्ट होना चाहिए, पूर्णांक पूर्णांक होना चाहिए।

+0

यह सवाल का जवाब नहीं देता है। यदि संभव हो तो कृपया अपने उत्तर को उचित रूप से संशोधित करें। –

संबंधित मुद्दे