2012-07-16 13 views
262

विजुअल स्टूडियो पर मेरे कंसोल एप्लिकेशन स्वचालित रूप से बंद हो रहे हैं, इसलिए मैं अपने निष्पादन के अंत में अनुप्रयोगों को "रोकें" के लिए सी के system("PAUSE") जैसे कुछ का उपयोग करना चाहता हूं, मैं इसे कैसे प्राप्त कर सकता हूं?सी # कंसोल अनुप्रयोगों को स्वचालित रूप से बंद होने से कैसे रोकें?

उत्तर

391
Console.ReadLine(); 

या

Console.ReadKey(); 

ReadLine() प्रतीक्षा करता है, ReadKey() प्रतीक्षा करता है किसी भी कुंजी के लिए (संशोधक कुंजियों को छोड़कर)।

संपादित करें: डारिन से मुख्य प्रतीक चुरा लिया।

+2

" 'कंसोल' asp.net 5 कंसोल App में 'ReadKey' के लिए एक परिभाषा शामिल नहीं है" ऊपर आता है, यहां जाएं: http://stackoverflow.com/questions/30588478/console-does -not-contain-a-definition-for-readkey-in-asp-net-5-console-app –

+9

यह वास्तव में एक बुरा जवाब है क्योंकि यह ओपी को देता है जो उन्होंने मांगे कि वे क्या चाहते हैं। ओपी को अपने सॉफ़्टवेयर को जिस तरह से लॉन्च करने के तरीके के आसपास काम करने के लिए तोड़ना है, वह सिर्फ बुरी सलाह है। अन्य चीजों के अलावा, यह एक पाइपलाइन में कार्यक्रम का उपयोग करना असंभव बनाता है। –

+1

सिल्वा का जवाब बेहतर है, नियंत्रण-F5 – Del

33

Console.ReadLine() उपयोगकर्ता के लिए या Console.ReadKey दर्ज करने के लिए किसी भी कुंजी के लिए प्रतीक्षा करें। के लिए

23

उपयोग:

Console.ReadKey(); 

इसे बंद करने के लिए किसी व्यक्ति द्वारा आपके कुंजी दबाना, या:

Console.ReadLine(); 

जब उपयोगकर्ता कुछ और प्रेस दर्ज करें।

113

तुम बस संकलन कर सकते हैं (डिबगिंग शुरू) के साथ Ctrl +F5 अपने काम।

इसे आज़माएं। मैं हमेशा ऐसा करता हूं और कंसोल मुझे दिखाता है कि मेरे परिणाम इस पर खुले हैं। कोई अतिरिक्त कोड की आवश्यकता नहीं है।

+12

Ctrl + F5 एप्लिकेशन को पुनर्निर्माण करता है (यदि आवश्यक हो) और इसे एक नई कंसोल विंडो में डिबगिंग * (यानी डीबगर संलग्न नहीं किया गया है) के बिना चलाता है, जहां आपके एप्लिकेशन से बाहर निकलने के बाद, एक 'पॉज़' कमांड या इसी तरह चलाया जाता है एक ही खिड़की कंसोल विंडो बंद होने से पहले 'पॉज़' आपको आउटपुट पढ़ने का मौका देता है। जब कमांड लाइन से एप्लिकेशन का उपयोग किया जाता है तो कोई रोकथाम की आवश्यकता नहीं होती है, क्योंकि कमांड समाप्त होने के बाद कंसोल विंडो बंद नहीं होती है। –

+2

@ टूलमेकरस्टेव इसे उखाड़ फेंक दिया गया क्योंकि यह ओपी की समस्या का सबसे अच्छा समाधान है। –

+1

@ToolmakerSteve, यही वह है जिसे मैं ढूंढ रहा हूं। मुझे रीडलाइन() और पढ़ें() पता है और इससे बचना चाहता था। – VivekDev

34

अपने कार्यक्रम चलाने के लिए दृश्य स्टूडियो में Ctrl + F5 प्रयास करें, इस के साथ एक ठहराव जोड़ देगा किसी भी Console.Readline() या ReadKey() फ़ंक्शन के बिना स्वचालित रूप से "जारी रखने के लिए ... कोई भी कुंजी दबाएँ"।

6

वैकल्पिक रूप से, आप बंद करने के लिए निम्न कोड का उपयोग कर देरी कर सकते हैं:

System.Threading.Thread.Sleep(1000); 

नोट Sleep मिलीसेकेंड उपयोग कर रहा है।

+8

थ्रेड। स्लीप (टाइमस्पेन। फ्रॉमसेकंड्स (1)) अगर कोई मानसिक रूप से सेकेंड के साथ काम करना चाहता है –

+2

'सिस्टम। थ्रेडिंग। थ्रेड। स्लीप (-1)' अनिश्चित काल तक सो जाओ। – Acidic

12

Ctrl + F5 बेहतर है, क्योंकि आपको अतिरिक्त लाइनों की आवश्यकता नहीं है। और अंत में, आप एंटर दबा सकते हैं और रनिंग मोड से बाहर निकल सकते हैं।

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

4

उन समाधानों का उल्लेख किया गया है कि आपका प्रोग्राम कैसे काम करता है।

आप बंद पाठ्यक्रम #if DEBUG और #endif कंसोल कॉल के आसपास रख सकते हैं, लेकिन तुम सच में दृश्य स्टूडियो के तहत अपने देव मशीन पर केवल बंद करने से या यदि वी.एस. केवल यदि आप स्पष्ट रूप से इसे कॉन्फ़िगर नहीं चल रहा है खिड़की को रोकने के लिए चाहते हैं, और आप कमांड लाइन से चलते समय परेशान 'Press any key to exit...' नहीं चाहते हैं, System.Diagnostics.Debugger API का उपयोग करने का तरीका है।

यदि आप केवल DEBUG में काम करना चाहते हैं, तो बस इस कोड को [Conditional("DEBUG")] void BreakConditional() विधि में लपेटें।

// Test some configuration option or another 
bool launch; 
var env = Environment.GetEnvironmentVariable("LAUNCH_DEBUGGER_IF_NOT_ATTACHED"); 
if (!bool.TryParse(env, out launch)) 
    launch = false; 

// Break either if a debugger is already attached, or if configured to launch 
if (launch || Debugger.IsAttached) { 
    if (Debugger.IsAttached || Debugger.Launch()) 
     Debugger.Break(); 
} 

यह उन कार्यक्रमों को डीबग करने के लिए भी काम करता है जिनके लिए ऊंचे विशेषाधिकारों की आवश्यकता होती है, या जिन्हें स्वयं को ऊपर उठाने में सक्षम होना आवश्यक है।

4

यदि आप नहीं चाहते हैं कि कोई प्रोग्राम दबाए तो भी प्रोग्राम बंद हो जाए;

while (true) { 
     System.Console.ReadKey();     
};//This wont stop app 
+0

यह एक अनंत लूप बनाता है। लगभग कभी भी एक अच्छा विचार नहीं है। –

+0

रीडकी पर इसकी प्रतीक्षा, इसलिए लगातार लूपिंग नहीं, इसका उपयोग होता है। यदि आपके पास एप्लिकेशन को नियंत्रित करने के लिए अन्य हैंडलिंग है तो यह एक व्यावहारिक समाधान है। अनंत और परे! :) – Hariboo

+0

मान लें कि यह एक कीप्रेस का पता लगाता है, तो क्या? यह सिर्फ अगली कीप्रेस के लिए इंतजार कर रहा है। यह लूप से बाहर नहीं टूटता है। बस एक टूटी हुई उदाहरण के साथ समस्या को भ्रमित करने के बजाय "सिस्टम का उपयोग करें। कंसोल। रीडकी()' "। फिर भी, एक अनंत लूप का उपयोग करके 'गोटो' का उपयोग करने जैसा व्यवहार किया जाना चाहिए। जब आपको आवश्यकता हो तो यह सक्षम होना अच्छा होता है लेकिन इसका उपयोग न करें क्योंकि आप कर सकते हैं! आखिरकार, किसी ऐप में 'जारी रखने के लिए कोई भी कुंजी दबाएं' जिसे इसकी आवश्यकता नहीं होनी चाहिए वह एक क्लेडी हैक है। यह ओपी की समस्या का समाधान नहीं है। इस प्रश्न में सभी उत्तर गलत हैं @Slobodan Stanković –

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