2010-12-15 16 views
25

मैं एक सांत्वना कार्यक्रम है कि इस तरह से चलाने के विभिन्न घटकों है कि है:विंडोज कंसोल आवेदन अटक (जरूरत कुंजी दबाएं)

void start() { 
while(true){ 
    DoSomething(); 
    Thread.Sleep(1000*5); 
} 
} 

मेरा मुख्य प्रवेश बिंदु [छद्म-ish कोड]

Thread.Start(Componenet1.Start); 
Thread.Start(Componenet2.Start); 

while(true){ 
    Console.Writeline("running"); 
    Thread.Sleep(1000*5); 
} 
तरह लग रहा है

कोई कंसोल नहीं है। कहीं भी पढ़ता है। मेरी समस्या कुछ समय है कि एप्लिकेशन बहुत अच्छा चल रहा है लेकिन फिर रुकें और यदि मैं खिड़की पर कोई भी कुंजी दबाता हूं तो यह फिर से काम करना शुरू कर देगा। यह काफी बार होता है लेकिन मेरे पास यह प्रोग्राम स्वचालित वातावरण में 100+ वीएम चलने पर 24/7 पर तैनात है।

कंप्यूटर पर भी मेरे पास कुछ एएचके स्क्रिप्ट और अन्य चीजें हैं जो माउस में हेरफेर करती हैं लेकिन यह सुनिश्चित नहीं करती कि इसके साथ कुछ करने का कोई अधिकार नहीं है।

यह भी ध्यान रखें कि कभी-कभी सीपीयू मशीनों पर 100% पर चल रहा है, इसलिए शायद धागा प्राथमिकता एक मुद्दा है?

समाधान: आपको त्वरित संपादन मोड को अक्षम करने की आवश्यकता है। यहाँ सी # कोड काम कर रहा है यह करने के लिए:

// http://msdn.microsoft.com/en-us/library/ms686033(VS.85).aspx 
    [DllImport("kernel32.dll")] 
    public static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint dwMode); 

    private const uint ENABLE_EXTENDED_FLAGS = 0x0080; 

    static void Main(string[] args) 
    { 
     IntPtr handle = Process.GetCurrentProcess().MainWindowHandle; 
     SetConsoleMode(handle, ENABLE_EXTENDED_FLAGS); 
+0

'DoSomething();' पर टिप्पणी करने का प्रयास करें और देखें कि यह – Andrey

+0

पर व्यवहार करता है या नहीं # सी # कोड में उत्तर काम नहीं कर रहा है। नीचे स्वीकृत उत्तर करता है। – liang

+0

सी # कोड मेरे लिए काम नहीं करता है। एक कामकाजी समाधान यहां पाया जा सकता है: https://stackoverflow.com/a/36720802/1999917 –

उत्तर

33

उपयोगकर्ता गलती से काला कंसोल विंडो में क्लिक करता है, एक भरा सफेद आयत के लिए कर्सर परिवर्तन, और अनुप्रयोग, अगले Console.Write बयान पर लटका हुआ है एक और जब तक क्लिक बनाया गया है।

यह कंसोल विंडो की एक सामान्य विशेषता है जब इसका "क्विकएडिट मोड" सक्षम होता है।

उस सुविधा को अक्षम करने के लिए, आपको रन-टाइम पर अपने ऐप की कंसोल विंडो के "क्विकएडिट मोड" विकल्प को अनचेक करना चाहिए।

+0

aaaaaaah, मुझे लगता है कि मैंने कर्सर को बदलते हुए देखा। जब यह अगला होता है तो मैं इसकी पुष्टि करने की कोशिश करूंगा। –

+0

@nextgenneo: यदि ऐसा है, तो आप इसे प्रोग्रामेटिक रूप से अक्षम कर सकते हैं: http://bytes.com/topic/visual-basic-net/answers/366818-console-writeline-hangs-if-user-click-into-console- खिड़की – LaGrandMere

+0

हाँ, बढ़िया। पुष्टि की यह समस्या थी! –

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