2012-05-22 34 views
6

मोटोरोला MC3100 (केवल सीई 6.0 संस्करण) पर मेरे .NET CF 3.5 एप्लिकेशन से बाहर निकलने पर मुझे त्रुटि संदेश मिलता है "एप्लिकेशन xxx में गंभीर त्रुटि आई है और बंद करने की जरूरत है "। फिर मुझे एप्लिकेशन को फिर से काम करने के लिए डिवाइस को गर्म करने की आवश्यकता है।सीई 6.0/.NET CF 3.5 एप्लिकेशन में गंभीर त्रुटि आई है (MC3100)

यह कोड तब तक ठीक काम करता है जब तक एप्लिकेशन बंद नहीं हो जाता है और यह केवल तभी विफल रहता है जब एप्लिकेशन में नियंत्रण पर कोई फ़ॉन्ट सेट किया गया हो। सब कुछ .NET CF 2.0 और अन्य सभी मोटोरोला, इंटरमेक, साइयन, एचएचसी उपकरणों पर भी ठीक काम करता है मैंने .NET CF 3.5 के साथ प्रयास किया है।

[MTAThread] 
static void Main() 
{ 
    Control oCtrl = new Control(); 
    oCtrl.Font = new System.Drawing.Font("Tahoma", 10F, System.Drawing.FontStyle.Bold); 

    // Setting the controls font to null works 
    // oCtrl.Font = null; Works 

    // Setting the Control to null does not work, still get error 
    // oCtrl = null;  Doesn't work 

    // Setting a font, not on a control, also works fine. 
    // System.Drawing.Font font = new System.Drawing.Font("Tahoma", 10F, System.Drawing.FontStyle.Bold); 
} 

मैं कुछ लिंक है कि लग संबंधित देखा है:

यहाँ मेरी वर्तमान परीक्षण कोड है

लेकिन अब तक एकमात्र सिफारिश मैंने पाया है कि आवेदन में फोंट को खत्म करना है। इस मामले में वहां बहुत सारे स्थान हैं जहां फोंट सेट किए गए हैं, जिसमें लिंक्ड असेंबली शामिल हैं, यह असंभव होगा।

क्या किसी और ने ऐसा कुछ देखा है। यह ठीक से इन संस्करणों पर फोंट के निपटान नहीं नियंत्रण के साथ कुछ करने के लिए की तरह लगता है।

+0

द्वितीय मान लीजिए कि क्या आप उस कोड को एप्लिकेशन के माध्यम से लॉन्च किए गए एक साधारण रूप में ले जाते हैं। क्या यह अभी भी समस्या है? – tcarvin

+0

हां यह करता है। मैंने अपने पूर्ण आवेदन के साथ शुरुआत की और कोड को तोड़ दिया जब तक कि मैंने उन पंक्तियों में समस्या को अलग नहीं किया। – skeeve

+0

डिबगिंग के घंटों और घंटों के बाद मैं अब एक ही बिंदु पर हूं। क्या आपको अपनी समस्या का समाधान मिला? –

उत्तर

2

मैं बिल्कुल एक ही समस्या का सामना करना पड़ा।

  • सभी new Font() बयान
  • उपयोग Form.Close() बजाय Application.Exit()
  • SQLite निर्भरता को दूर करने के लिए 3.5
  • प्रयास नेट सीएफ के लिए पूरे आवेदन ले जाएँ निकालें: की कोशिश की निम्नलिखित (कोई नहीं समस्या हल हो जाती)

एकमात्र समाधान जो आखिरकार हमारे मामले के लिए काम करता था, (हालांकि यह "सुंदर" समाधान नहीं है), बी है een MainForm.Closed()

Process.GetCurrentProcess().Kill() 
0

मुझे एक ही समस्या का सामना करना पड़ा: मोटोरोला MC3100, विन्स 6 के साथ, केवल स्टैंडअलोन चलाने पर एप्लिकेशन से बाहर निकलने पर क्रैश हो रहा है, और वीएस डीबगर संलग्न होने पर कोई क्रैश नहीं होता है। जब दुर्घटनाग्रस्त हो गया, ओएस एचएस था और डिवाइस को ठंडा करने का एकमात्र समाधान था।

और मैं निम्नलिखित समाधान के साथ इसका सामना करने में प्रबंधन करता हूं।

मेरा ऐप एक मॉडल के रूप में उप Application.exit() का उपयोग किया गया था, और यह कुछ अप्रबंधित फॉन्ट द्वारा प्रयोग किया जाता ressources साथ अच्छी तरह से निपटने के नहीं है लगता है।

मेरे मामले में सटीक कारण मेरे मुख्य रूप में नए फ़ॉन्ट (...) का उपयोग करना था। इसे मोडल सबफॉर्म में उपयोग करने से कोई समस्या नहीं आई है।

application.exit() मुख्य रूप में वापस लाना या तो काम नहीं किया, न ही स्पष्ट रूप से फ़ॉन्ट ressources निपटान (मैं इस तरह से उन्मुख कोशिश का एक बहुत बनाया)।

अंत एकमात्र समाधान मैं खोजने के काम करता है MainForm बंद करने के बजाय application.exit का उपयोग कर() द्वारा आवेदन छोड़ने की थी, और यह अच्छी तरह से काम करता है पर

0

आवेदन.एक्सिट() अनुप्रयोगों को बंद करने के लिए अनुशंसित तरीका नहीं है। आदेश अनुप्रयोग को बंद करने के लिए सभी खोला रूपों को बंद करें।

http://blogs.msdn.com/b/tom_krueger/archive/2005/02/24/379678.aspx

+1

कृपया ध्यान दें कि आपके द्वारा उद्धृत ब्लॉग पोस्ट * रास्ता * पुराना है। –

0

में निम्न आदेश मैं MC3190 के साथ इस सटीक मुद्दा था। मुझे मिला कि समाधान प्रत्येक उदाहरण को वैश्विक सूची में और आवेदन के माध्यम से एप्लिकेशन निकास पाश पर जोड़कर आवेदन में खोले गए सभी रूपों का ट्रैक रखना था और सूची में प्रत्येक आइटम पर प्रदर्शन करें। सूची में प्रत्येक आइटम पर विचार करें। महीनों के लिए मुझे परेशान किया है।

0

हमने विंडोज सीई 6.0/.NET 3.5 सीएफ चलाने वाले मोटोरोला MC3190 डिवाइसों के साथ इस समस्या का अनुभव किया। महीनों के लिए हम अपने आवेदन को बंद करने पर एक घातक घातक त्रुटि संवाद का सामना कर रहे थे। प्रत्येक संभावित विकल्प को यह सुनिश्चित करने के लिए थ्रेडएबॉर्ट अपवादों से खोजा गया था कि प्रत्येक संसाधन को ठीक तरह से निपटाया गया था।

आम तौर पर, यदि किसी डिवाइस के पास कोई विशेष फ़ॉन्ट नहीं है या किसी को पहचानने की कोशिश नहीं कर रहा है, तो यह एरियल के लिए डिफ़ॉल्ट होगा। हालांकि MC3190 के साथ, यदि कोई फ़ॉन्ट पहचाना नहीं गया है, तो डिवाइस एक घातक त्रुटि संवाद प्रदर्शित करेगा और एप्लिकेशन से बाहर निकलने के बाद फ्रीज करेगा। इसके परिणामस्वरूप उपयोगकर्ता को बूट गर्म करना पड़ता है (कभी-कभी ठंडा बूट)।

हम दो समाधान इस समस्या का साथ आया था:

  1. कुछ करने के लिए आवेदन चौड़ा फ़ॉन्ट सेट करें कि समर्थित है (एरियल के साथ Tahoma की जगह)
  2. रीसेट किसी भी वैश्विक फ़ॉन्ट या तो instantiating द्वारा वस्तुओं एक समर्थित फ़ॉन्ट या शून्य के लिए सेटिंग के साथ।
0

आपको फॉर्म बनाना चाहिए और अपना कोड एप्लिकेशन.रुन() संदर्भ में चलाएं। रन के अंत में, कई संसाधनों को "जादू द्वारा" निपटाया जाता है। अन्यथा आपको निपटान करने की आवश्यकता वाले हर संसाधन का निपटान करना होगा।

0

हम एक ही समस्या का सामना करना पड़ा और MainForm.Closed (में कोड की इस पंक्ति के साथ हल)

Process.GetCurrentProcess().Kill() 
0

मैं NET कम्पैक्ट फ्रेमवर्क 3.5 का उपयोग कर एक मोटोरोला 9190-जी पर एक ही समस्या थी। कभी-कभी मुझे डिवाइस को बूट करना होगा क्योंकि यह मेरे आवेदन को बंद करने के बाद फ्रीज होगा।

मैं ListView फॉर्म के फ़ॉन्ट को निर्दिष्ट करके इस समस्या को हल करने में सक्षम था Constructor में एरियल, 10pt, नियमित होने के लिए निहित था। मैं फिर प्रोग्राम को अपने वांछित फ़ॉन्ट पर फ़ॉन्ट सेट करता हूं। उदाहरण के लिए, myListView.Font = new System.Drawing.Font("Tahoma", 11F, System.Drawing.FontStyle.Bold);

यदि मेरे पास किसी अन्य फ़ॉन्ट/फ़ॉन्ट शैली/आकार संयोजन के लिए फ़ॉन्ट सेट था, तो मुझे मोबाइल डिवाइस पर एप्लिकेशन बंद करते समय "प्रोग्राम को गंभीर समस्या का सामना करना पड़ा और बंद करना होगा" त्रुटि संदेश प्राप्त होगा।