2011-06-30 17 views
5

पर मान्य नहीं है जब मेरा ऐप चल रहा है और सिस्टम हाइबरनेशन (विंडोज 7 में) से शुरू होता है तो मुझे एक अजीब समस्या है।विनफॉर्म ड्रॉइंग - पैरामीटर सिस्टम रेज़्यूमे

मैं ग्राफिक्स को कॉल कर रहा हूं। ड्रॉस्ट्रिंग विधि और यह ज्यादातर समय ठीक काम करता है। जब प्रोग्राम चल रहा है और छोड़कर मैं सिस्टम को हाइबरनेट करता हूं। फिर जब मैं फिर से शुरू करता हूं, ड्रॉस्ट्रिंग विधि एक ArgumentException फेंकता है (पैरामीटर वैध नहीं है) और मुझे एक लाल क्रॉस देता है जहां मेरा चित्र होना चाहिए।

यहां क्या गलत हो रहा है? अपवाद को पकड़ने से लाल क्रॉस से बचा जाता है लेकिन जब हम इस स्थिति में आते हैं तो कोई रास्ता नहीं है और कार्यक्रम को फिर से शुरू होने तक अपवाद फेंक दिया जाएगा।

किसी भी मदद के लिए धन्यवाद, एलन

संपादित करें:

protected override void OnPaint(PaintEventArgs e) 
{ 
    // Drawing logic succeeds until this point 

    e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), new PointF(x, y)); 
} 

यह वास्तव में ToolStripLabel का एक उपवर्ग है: यहाँ कोड है कि विफल हो रहा है है।

+2

क्या आप कुछ कोड जोड़ सकते हैं? सुनिश्चित करें कि जिस विंडो पर आप चित्रित कर रहे थे वह अभी भी मौजूद है। यह एक अवैध एचडब्ल्यूएनडी की तरह लगता है। –

+0

यदि आपने ग्राफिक्स ऑब्जेक्ट बनाया है तो यह भी अमान्य हो सकता है। –

+0

टिप्पणियों के लिए धन्यवाद, मैंने एक कोड नमूना जोड़ा है। मुझे कुछ और उल्लेख करना चाहिए कि मूल रूप से WindowsFormHost कंटेनर के अंदर मेरे Winforms घटकों के साथ मूल रूप WPF है। –

उत्तर

2

नींद या हाइबरनेशन के बाद कई सिस्टम संसाधन अमान्य हो जाते हैं। तो आपका फ़ॉन्ट शायद अमान्य है क्योंकि यह ऐसे मुद्दों का एक आम कारण है। साथ ही, मुझे लगता है कि आप SolidBrush पर निपटान नहीं कर रहे हैं, जिसे संसाधन संसाधनों को रोकने के लिए आपको ऐसा करना चाहिए। इस तरह ...

using(SolidBrush drawBrush = new SolidBrush(ForeColor)) 
    e.Graphics.DrawString(Text, Font, drawBrush, new PointF(x, y)); 
+0

आपकी मदद फिल के लिए धन्यवाद। ऐसा लगता है कि ब्रश का निपटान अपराधी नहीं था। मैंने कुछ हाइबरनेट की कोशिश की है और समस्या फिर से नहीं हुई है। –

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