2009-03-28 6 views
29

मैं काम पर सांत्वना आवेदनों की एक संख्या को बनाए रखने कर रहा हूँ और एक बात मैं उनमें से एक संख्या में देख रहा है कि वे Environment.Exit (0) कहते हैं।किसी को पर्यावरण का उपयोग कब करना चाहिए। कंसोल एप्लिकेशन को समाप्त करने के लिए एक्सटिट करें?

एक नमूना कार्यक्रम इस प्रकार दिखाई देगा:

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     DoStuff(); 
     Environment.Exit(0); 
    } 
} 

मुझे समझ नहीं आता क्या मूल प्रोग्रामर की मंशा ऐसा करने में किया गया था? पर्यावरण के बिना भी मेरे दिमाग में। एक्सटिट स्टेटमेंट प्रोग्राम को ठीक से बाहर निकलना चाहिए। जिसके अनुसार, इन कार्यक्रमों में से एक के लिए, यह कंसोल विंडो शेष कर दिया गया है के बाद भी यह इतना बंद कर दिया है चाहिए था मैं सच में यकीन है कि क्या वहाँ हो रहा है नहीं कर रहा हूँ है ....

मैं यहाँ कुछ याद आ रही है? या पर्यावरण का एक कारण है। इस उदाहरण में एक्साइट को बुलाया जाना चाहिए?

+3

इनमें से बहुत सी चीजें प्रोग्रामर अंधविश्वास है, जैसे कि कनेक्शन ऑब्जेक्ट्स को बंद करना और निपटाना, भले ही इसे –

उत्तर

45

मुख्य विधि की अंतिम पंक्ति के रूप में Exit() पर कॉल करने का एकमात्र कारण यह है कि यदि अन्य अग्रभूमि धागे चल रहे हों। अगर वे Main के अंत में निष्पादन बंद हो गए तो वे दौड़ते रहेंगे। यहां तक ​​कि इस मामले में, यह आम तौर पर एक बेहतर विचार या तो अन्य धागे में कुछ स्पष्ट सुंदर समाप्ति में डालने के लिए हो सकता है - या उन्हें पृष्ठभूमि धागे के साथ शुरू करने के लिए बनाते हैं।

यदि आप कभी भी Main से एक अलग निकास कोड वापस करना चाहते हैं, तो इसे प्राप्त करने का आसान तरीका यह है कि इसे int लौटाएं।

संक्षेप में, मुझे नहीं लगता कि आपको Environment.Exit() की आवश्यकता है, और यह आपके सहयोगियों से पूछने लायक है कि वे इसका उपयोग क्यों कर रहे हैं - संभावना है कि वे आपको एक अच्छा कारण नहीं दे पाएंगे, और यह एक और बिट है फ्लफ का आप काट सकते हैं।

+0

धन्यवाद जोन! ऐसा मत सोचो कि मुझे इसके बारे में मूल डेवलपर से पूछने के लिए बहुत भाग्य होगा क्योंकि वह मटेरेटी छुट्टी पर है। कम से कम अब मुझे पता है कि मैं इसे तोड़ने के बारे में चिंता किए बिना इसे हटा सकता हूं। – mezoid

+0

लिंक किए गए प्रश्न http://stackoverflow.com/questions/5253158/c-using-environment-exitcode-versus-returning-int-from-main ने उपयोगी जानकारी भी जोड़ा। –

13

मूल रूप से बयान Environment.Exit(0) ऑपरेटिंग सिस्टम है कि यह एक "क्लीन" निकास है कि बताता है। Environment.Exit(1)

हालांकि अन्य बातों को ध्यान में रखना है कि "मुख्य" को "शून्य" वापस लौटने के रूप में घोषित नहीं किया गया है, इसलिए निकास कोड का अर्थ वास्तव में नहीं होगा ।

बस मामले में आप, अलग से बाहर निकलें कोड के बारे में अधिक जानने के लिए एक नज़र यहाँ

system Error Codes

+1

'मुख्य' घोषित करने के रूप में घोषित किया गया हो, बाहर निकलने वाले कोड के अर्थ से कुछ भी नहीं है। – Ryan

3

यह [संगतता] कमांड लाइन कार्यक्रमों एक अंतर्निहित खोल करने के लिए सफलता या विफलता का संकेत करने के लिए है चाहता था और पुराने सी-शैली मुख्य छोरों से प्राप्त होती है, जहां मुख्य समारोह के प्रोटोटाइप

int main(void); 

int main(int argc, char *argv[]); 

था 0 पारंपरिक रूप से मतलब सफलता का वापसी मान, जबकि गैर शून्य विफलता या कुछ और, निर्भर करता है मतलब डब्ल्यू पर प्रोग्रामर ने टोपी तय की।

संदर्भ:

main समारोह में अधिक जानकारी के लिए wiki

पर Environment.Exit()

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

+0

मेरे मामले में, मेरा कंसोल एप्लिकेशन एक स्टैंड अकेले एप्लिकेशन है और ओएस को कुछ भी बताने की आवश्यकता नहीं है। तो मुझे लगता है कि इसका मतलब है कि मेरी स्थिति में कॉल अनावश्यक है ....? – mezoid

+0

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

+0

यह ध्यान देने योग्य है कि एक .NET कंसोल ऐप में इसकी मुख्य विधि 'int' के साथ-साथ' शून्य 'भी हो सकती है। मुझे हर व़क्त यह करना है। – tomfanning

0

यह वास्तव में उपयोग किया जाता है जब अन्य एप्लिकेशन आपके कंसोल ऐप के परिणाम पर प्रतीक्षा कर रहे हैं। उदाहरण के लिए, एसएसआरएस (टूल) एक कंसोल ऐप लॉन्च कर सकता है, और विफलता प्रतिक्रिया की सफलता वापस पाने के लिए इंतजार कर रहा है। पर्यावरण। एक्सिट (0) एक सफल निष्पादन संदेश वापस भेजता है।

0

एसएसआईएस में जब आपके पास निष्पादन प्रक्रिया कार्य है और आप जानना चाहते हैं कि प्रक्रिया विफल हो रही है, तो यह विधि उपयोगी है।

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

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