C # में कंसोल एप्लिकेशन से बाहर निकलने के लिए क्या कमांड है?


256

कंसोल एप्लिकेशन से बाहर निकलने के लिए C # में क्या कमांड है?

जवाबों:


333

आप उपयोग कर सकते हैं Environment.Exit(0);औरApplication.Exit

Environment.Exit(0) क्लीनर है


8
बस जिज्ञासु, क्या यह क्लीनर बनाता है?
एच। एच। टी।

यह मेरे लिए पूरी तरह से काम करता है जब मैंने स्टैकओवरफ्लो . com/ a/7865126/1530166 के माध्यम से एक कंसोल ऐप में टाइमर जोड़ा । Stackoverflow.com/a/37029044/1530166 का उपयोग करने पर भी Application.Exit ने ऐसा नहीं किया ।
जेसन एंडरसन

5
@GrantH। यह क्लीनर है क्योंकि यह अंतर्निहित ऑपरेटिंग सिस्टम को अधिक उपयोगी त्रुटि कोड देता है जो इसे बाहर निकाल रहा है।
फेज़्सल एल मोफेटीके

हालाँकि, इसके लिए Environment.Exitआवश्यक है कि आपके पास SecurityPermissionFlag.UnmanagedCode अनुमतियां - जो कुछ के लिए परेशानी वाली हो सकती हैं।
wp78de

93

कई विकल्प, सबसे उपयुक्त तरीके से आदेश:

  1. Program.Main विधि से int लौटाएँ
  2. एक अपवाद को फेंक दें और इसे कहीं भी न संभालें (अप्रत्याशित त्रुटि स्थितियों के लिए उपयोग करें)
  3. समाप्ति को अन्यत्र करने के लिए, System.Environment.Exit( पोर्टेबल नहीं! नीचे देखें )

पठनीयता में सुधार के लिए 9/2013 को संपादित किया गया

एक विशिष्ट निकास कोड के साथ लौटना: जैसा कि सर्विसे टिप्पणियों में बताते हैं, आप मुख्य को intरिटर्न प्रकार के साथ घोषित कर सकते हैं और इस तरह से एक त्रुटि कोड वापस कर सकते हैं। तो वास्तव में पर्यावरण का उपयोग करने की कोई आवश्यकता नहीं है। तब तक बाहर निकलें जब तक आपको एक एक्जिट कोड के साथ समाप्त करने की आवश्यकता न हो और मुख्य विधि में संभवतः ऐसा न कर सकें। सबसे शायद आप एक अपवाद को फेंकने से बच सकते हैं, और मुख्य में एक त्रुटि कोड वापस कर सकते हैं यदि कोई अखंड अपवाद वहां प्रचारित करता है। यदि एप्लिकेशन बहु-थ्रेडेड है, तो शायद आपको बाहर निकलने के कोड के साथ ठीक से समाप्त करने के लिए और भी अधिक बॉयलरप्लेट की आवश्यकता होगी ताकि आप पर्यावरण को कॉल करने से बेहतर हो सकें।

Evironment.Exitबहु-थ्रेडेड एप्लिकेशन लिखते समय भी उपयोग करने के खिलाफ एक और बिंदु - पुन: प्रयोज्य है । यदि आप कभी भी अपने कोड का उपयोग ऐसे वातावरण में करना चाहते हैं जो Environment.Exitअप्रासंगिक बनाता है (जैसे कि एक पुस्तकालय जो वेब सर्वर में उपयोग किया जा सकता है), तो कोड पोर्टेबल नहीं होगा। सबसे अच्छा समाधान अभी भी है, मेरी राय में, हमेशा अपवादों और / या मूल्यों का उपयोग करने के लिए जो प्रतिनिधित्व करते हैं कि विधि कुछ त्रुटि / खत्म स्थिति तक पहुंच गई है। इस तरह, आप हमेशा किसी भी .NET वातावरण में, और किसी भी प्रकार के एप्लिकेशन में एक ही कोड का उपयोग कर सकते हैं। यदि आप विशेष रूप से एक ऐप लिख रहे हैं, जो एक एक्जिट कोड को वापस करने की जरूरत है या जो Environment.Exitकरता है उसके समान तरीके से समाप्त करने के लिए , आप तब आगे बढ़ सकते हैं और उच्चतम स्तर पर थ्रेड को लपेट सकते हैं और आवश्यकतानुसार त्रुटियों / अपवादों को संभाल सकते हैं।


10
वह अंतिम विकल्प खराब स्वाद में है। कोई भी प्रोग्रामर अपवाद को फेंककर प्रोग्राम से बाहर नहीं निकलना चाहता।
निखिल अग्रवाल

5
जैसा कि मैंने लिखा है "सबसे उपयुक्त के आदेश से"। इसके अलावा, कुछ स्थितियों में एक अपवाद को फेंकना सही तरीका है (जैसे कि जब कोई अप्रत्याशित, घातक त्रुटि जो घटित नहीं होनी चाहिए, जिससे एप्लिकेशन कभी ठीक नहीं होगा)। मैंने स्पष्ट करने के लिए उत्तर अपडेट किया है।
sinelaw

यदि आप मेन में हैं तो आप केवल 0, 1, इत्यादि वापस कर सकते हैं और त्रुटि कोड को वापस करने के लिए इंट के रूप में विधि हस्ताक्षर को चिह्नित कर सकते हैं, त्रुटि कोड निर्दिष्ट करने के लिए आप पर्यावरण का उपयोग करने की आवश्यकता नहीं करते।
सर्विंग

2
निर्भर करता है कि आप कॉल स्टैक में कितने गहरे हैं और क्या आप मुख्य धागे में हैं। यह पर्यावरण को कॉल करने के लिए सरल हो सकता है। अपने पूरे कार्यक्रम को आर्किटेक्ट के बजाय मुख्य समारोह में वापस लाने के लिए अपने पूरे कार्यक्रम को वापस करने के लिए कॉल स्टैक को कम करने के लिए एक अपवाद का उपयोग किए बिना (जो एक पृष्ठभूमि थ्रेड से काम नहीं करेगा; या तो थ्रेडपूल स्विंग होगा; अपवाद या इसे बाहर फेंक दिया जाएगा, या तो मुख्य विधि या धागे में किसी भी पकड़ तर्क को कभी भी नहीं देखा जाएगा।
कीथ्स

मैंने विकल्पों का क्रम बदल दिया। एक अपवाद को फेंकने से विभिन्न निष्पादन योग्य वातावरणों में पुस्तकालय के रूप में पुन: उपयोग करने के लिए आपके कोड को बहुत आसान बनाने का लाभ मिलता है।
sinelaw

26

कंसोल फ़ंक्शन से बाहर निकल जाएगा जब मुख्य फ़ंक्शन ने चलना समाप्त कर दिया है। एक "वापसी" यह हासिल करेगा।

    static void Main(string[] args)
    {
        while (true)
        {
            Console.WriteLine("I'm running!");
            return; //This will exit the console application's running thread
        }
    }

यदि आप एक त्रुटि कोड वापस कर रहे हैं, तो आप इसे इस तरह से कर सकते हैं, जो प्रारंभिक थ्रेड के बाहर के कार्यों से सुलभ है:

    System.Environment.Exit(-1);

9

आप उपयोग कर सकते हैं Environment.Exit(0)और Application.Exit

Environment.Exit(): इस प्रक्रिया को समाप्त करता है और अंतर्निहित ऑपरेटिंग सिस्टम को निर्दिष्ट निकास कोड देता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.