एक VB.NET WinForms परियोजना में मैं एक अपवाद मिलएक डिस्पोजेड ऑब्जेक्ट तक नहीं पहुंच सकता - कैसे ठीक करें?
जब एक रूप को बंद करने के लिए एक निपटाए वस्तु
तक नहीं पहुंच सकता। यह बहुत ही कम होता है और मैं इसे मांग पर फिर से नहीं बना सकता। स्टैक ट्रेस इस तरह दिखता है:
Cannot access a disposed object. Object name: 'dbiSchedule'.
at System.Windows.Forms.Control.CreateHandle()
at System.Windows.Forms.Control.get_Handle()
at System.Windows.Forms.Control.PointToScreen(Point p)
at Dbi.WinControl.Schedule.dbiSchedule.a(Boolean A_0)
at Dbi.WinControl.Schedule.dbiSchedule.a(Object A_0, EventArgs A_1)
at System.Windows.Forms.Timer.OnTick(EventArgs e)
at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
डीबीआईशेड्यूल डीबीआई-टेक से शेड्यूल नियंत्रण है। फॉर्म पर एक टाइमर है जो हर कुछ मिनट में स्क्रीन पर शेड्यूल अपडेट करता है।
कोई विचार क्या अपवाद पैदा कर रहा है और मैं इसे ठीक करने के बारे में कैसे जा सकता हूं? या यहां तक कि मांग पर इसे फिर से बनाने में सक्षम होने के नाते?
हेज! सारे सवालों के जवाब देने के लिए धन्यवाद। हम टाइमर को फॉर्मक्लोजिंग ईवेंट पर रोकते हैं और हम टाइमर टिक ईवेंट में इसका उपयोग करने से पहले शेड्यूल घटक पर IsDisposed प्रॉपर्टी की जांच करते हैं लेकिन इससे मदद नहीं मिलती है।
यह वास्तव में कष्टप्रद समस्या है क्योंकि अगर कोई ऐसे समाधान के साथ आया है जो काम करता है - मैं समाधान की पुष्टि करने में सक्षम नहीं हूं क्योंकि मैं मैन्युअल रूप से समस्या को पुन: उत्पन्न नहीं कर सकता।
IsDisposed की जांच करना कम हो जाएगा, लेकिन समस्या को खत्म नहीं करेगा। सही समाधान फॉर्म को बंद करने से पहले टाइमर को रोकना है। –