2011-08-22 14 views
62

सी # एप्लिकेशन बंद करते समय सबसे अच्छा अभ्यास क्या है?बंद करने वाले अनुप्रयोग

मैंने पढ़ा है कि आप उपयोग कर सकते हैं:

Environment.Exit(0); or Application.Exit(); 

लेकिन क्या अंतर है?

इसके अलावा, पर्यावरण के संबंध में। एक्सिट (0), मैंने जावा के साथ काम करते समय निकास कोड का उपयोग किया है लेकिन कभी भी अपने उद्देश्य को पूरी तरह से समझ नहीं लिया है। सी # में आवेदन से बाहर निकलने पर वे क्या भूमिका निभाते हैं?

+2

आपके आवेदन पर निर्भर करता है Application.Exit

जांच उपयोग करने के लिए। यदि आप राक्षस लिखते हैं, तो 0 लौटाएं; यदि आप विंडोज़ एप्लीकेशन का उपयोग करते हैं, तो मुख्य फॉर्म बंद करें। मजबूर समाप्ति का उपयोग न करें। – Cynede

+1

संभावित डुप्लिकेट http://stackoverflow.com/questions/1312885/application-exit-vs-application-exitthread-vs-environment-exit –

+1

@ जलाल आपका अधिकार हो सकता है .. लेकिन, मैं नहीं कहूंगा कि यह डुप्लिकेट है .. मैंने आपकी टिप्पणी के एक मिनट से पहले नीचे अपनी पोस्ट में यह लिंक जोड़ा है। कृपया डुप्लिकेट के रूप में चिह्नित न करें, यह आशा करता है कि यह लायक है। –

उत्तर

64

System.Windows.Forms.Application.Exit() - सभी संदेश पंप है कि वे समाप्त करना होगा सूचित और फिर बंद कर देता है संदेशों के बाद सभी आवेदन खिड़कियों संसाधित किया गया है। यह विधि सभी थ्रेड पर सभी चल रहे संदेश लूप बंद कर देती है और एप्लिकेशन की सभी विंडो बंद कर देती है। यह विधि अनुप्रयोग से बाहर निकलने के लिए मजबूर नहीं करती है। निकास विधि को आम तौर पर एक संदेश लूप के भीतर से बुलाया जाता है, और वापस लौटने के लिए मजबूर करता है। केवल मौजूदा थ्रेड के लिए संदेश लूप से बाहर निकलने के लिए, ExitThread को कॉल करें। यदि आप WinForms एप्लिकेशन चला रहे हैं तो यह उपयोग करने के लिए कॉल है। एक सामान्य दिशानिर्देश के रूप में, अगर आपने System.Windows.Forms.Aplication.Run कहा है तो इस कॉल का उपयोग करें।

सिस्टम। पर्यावरण। एक्सिट (निकास कोड) - इस प्रक्रिया को समाप्त करता है और अंतर्निहित ऑपरेटिंग सिस्टम निर्दिष्ट निकास कोड देता है। इस कॉल के लिए आवश्यक है कि आपके पास SecurityPermissionFlag.UnmanagedCode अनुमतियां हों। यदि आप नहीं करते हैं, तो सुरक्षा अपवाद त्रुटि होती है। यदि आप कंसोल एप्लिकेशन चला रहे हैं तो यह उपयोग करने के लिए कॉल है।

मुझे आशा है कि बेहतर है कि इस लिंक Application.Exit() vs Application.ExitThread() vs Environment.Exit() और http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx

+5

स्पष्ट रूप से इंगित करने लायक हो सकता है कि आप 'एप्लिकेशन' को कॉल करने से पहले। रुन 'आपकी' पसंद 'पर्यावरण' के रूप में 'एप्लिकेशन.एक्सिट' के रूप में कोई प्रभाव नहीं पड़ेगा। – Carsten

+1

मेरे पास दो रूपों का लॉगिन और मुख्य रूप है। जब लॉग इन बटन लॉग इन फॉर्म पर क्लिक किया जाता है तो मैं इस हाइड() का उपयोग करता हूं जब लॉगिन क्लिक किया जाता है और मेनफॉर्म खुलता है और वहां से मैं फॉर्म बंद होने पर छिपाने का उपयोग करता हूं, फिर लॉगिन फॉर्म फिर से दिखाई देता है। यदि मैं एप्लिकेशन चलाता हूं और लॉगिन बटन पर क्लिक करता हूं और फिर बार-बार मुख्य रूप से मुख्य रूप से बंद करता हूं और जब मैं लॉगिन फॉर्म पर निकास (System.Windows.Forms.Aplication.Exit()) बटन पर क्लिक करता हूं, तो यह सभी लॉगिन फॉर्म दिखाएगा मैंने छुपाया लेकिन अगर मैं (System.Environment.Exit (0)) का उपयोग करता हूं तो यह एप्लिकेशन को बंद कर देगा और पूरी तरह से बाहर निकल जाएगा। सब कुछ मैं कहूंगा कि बाद वाला सबसे अच्छा है –

16

Application.Exit विंडोज फॉर्म अनुप्रयोगों के लिए है - यह उन सभी पंपों को सूचित करता है जिन्हें उन्हें समाप्त करना चाहिए, उनके लिए प्रसंस्करण घटनाओं को समाप्त करने के लिए इंतजार कर रहा है और फिर एप्लिकेशन को समाप्त कर देता है। ध्यान दें कि यह आवश्यक रूप से बाहर निकलने के लिए आवेदन को मजबूर नहीं करता है।

Environment.Exit सभी विंडोज अनुप्रयोगों के लिए लागू है, हालांकि यह मुख्य रूप से कंसोल अनुप्रयोगों में उपयोग के लिए है। यह तुरंत दिए गए निकास कोड के साथ प्रक्रिया को समाप्त करता है।

सामान्य तौर पर आप Application.Exit का उपयोग करना चाहिए Windows कंसोल अनुप्रयोगों में अनुप्रयोगों और Environment.Exit रूपों में, (हालांकि मैं पूरा करने Main विधि/प्रवेश बिंदु चलने देने के लिए के बजाय सांत्वना अनुप्रयोगों में Environment.Exit फोन पसंद करते हैं)।

अधिक जानकारी के लिए एमएसडीएन दस्तावेज देखें।

+0

उत्तर के लिए धन्यवाद। मुझे Program.cs की बजाय एक अलग वर्ग से अपने आवेदन से बाहर निकलने की आवश्यकता है और यह एक कंसोल एप्लिकेशन है, और यह बहुत अच्छा काम करता है। मैं कीवर्ड रिटर्न का उपयोग कर सकता हूं, साथ ही मुझे विश्वास है और इससे मुख्य खत्म होने दिया जाएगा, लेकिन इससे इस मामले में कोई फर्क नहीं पड़ता। – Radmation

0

सी # में किसी एप्लिकेशन से बाहर निकलने पर वे क्या भूमिका निभाते हैं?

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

लेकिन क्या अंतर है?

कोई सिस्टम से एक पर्यावरण से आता है। Windows.Forms? आवेदन। Functionall वहाँ बहुत अंतर नहीं होना चाहिए।

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