2010-10-07 8 views
48

मेरा जीयूआई डेस्कटॉप-आधारित WPF 4.0 (सी # नेट 4.0) प्रोग्राम SQL सर्वर डेटाबेस के साथ काम करता है । प्रत्येक बार जब मैं अपना एप्लिकेशन चलाता हूं तो यह एडीओ.NET इकाई फ्रेमवर्क के माध्यम से SQL सर्वर से कनेक्शन बनाता है और यदि SQL सर्वर पहुंच योग्य नहीं है तो यह अपवाद फेंकता है और अधिसूचना के साथ संदेशबॉक्स दिखाता है।WPF GUI एप्लिकेशन को बंद करने का सही तरीका: GetCurrentProcess()। Kill(), Environment.Exit (0) या यह। शटडाउन()

अब मैं चाहता हूं कि उपयोगकर्ता को यह संदेश पढ़ने के बाद एप्लिकेशन बंद हो जाए। - पास आवेदन और Windows में आवेदन की प्रक्रिया को मारने

Process.GetCurrentProcess().Kill(); 

या

this.Shutdown(); // Application.Current.Shutdown() 

या

System.Environment.Exit(0); 

वे सब के सब ठीक काम करते हैं और मैं क्या आवश्यकता है: मैं तीन तरीके यह करने के लिए मिल गया कार्य प्रबंधक।

मैं जानना चाहता हूँ:

  1. उन दोनों के बीच क्या अंतर है?
  2. कौन सा तरीका मेरे आवेदन को तेज़ी से बंद कर देगा?
  3. आवेदन बंद करने के किस तरीके का उपयोग करना चाहिए?
  4. Application.Current.Shutdown() और this.Shutdown() आवेदन बंद करने के लिए एक ही तरीका है?

या शायद एक और अधिक उपयुक्त, एक WPF GUI एप्लिकेशन को बंद करने का तरीका है?

The event ' System.Windows.Application.Exit ' can only appear on the left-hand side of += or -=

धन्यवाद:

Application.Exit() के रूप में मैं त्रुटि मिलती है मेरे लिए काम नहीं करता।

उत्तर

67

Application.Current.Shutdown() एप्लिकेशन को बंद करने का सही तरीका है। आम तौर पर जब आप more

Process.GetCurrentProcess().Kill() का उपयोग तब किया जा सकता है जब आप एप्लिकेशन को मारना चाहते हैं। more

विज्ञापन 1। उन तरीकों की प्रकृति पूरी तरह से अलग हैं। बंद करने की प्रक्रिया को कुछ परिचालनों को समाप्त करने के लिए रोका जा सकता है, आवेदन को बंद करने के लिए मजबूर करें।

विज्ञापन 2। शायद Kill() सबसे तेज़ तरीका होगा, लेकिन यह कर्नेल पैनिक की तरह कुछ है।

विज्ञापन 3। शटडाउन क्योंकि यह निकट घटना

विज्ञापन 4 को सक्रिय करता है। यह निर्भर करता है कि this क्या है।

+0

>> विज्ञापन 4। यह निर्भर करता है कि यह क्या है। मैं App.cs कन्स्ट्रक्टर में कनेक्शन फ़ंक्शन कॉल करता हूं, इसलिए «यह» - यह ऐप-क्लास का उदाहरण है। –

+0

मैं Process.GetCurrentProcess() का उपयोग करता हूं। जब ऐप को डेटा संदर्भ नहीं मिल सकता है (जहां सबकुछ बचाया जाता है), और उपयोगकर्ता ऐप को कहने के लिए कहता है कि यह कहां है। चूंकि कुछ भी बचाया नहीं जा सकता है, ऐप सिर्फ आत्म-immolates। – HiredMind

2

Use Application.Current.Shutdown();

Add ShutdownMode="OnMainWindowClose" in App.xaml

+0

शटडाउन मोड जानकारी के लिए: https://msdn.microsoft.com/en-us/library/system.windows.application.shutdownmode(v=vs.110).aspx – CRice

1
private void ExitMenu_Click(object sender, RoutedEventArgs e) 
    { 
     Application.Current.Shutdown(); 
    } 
+0

आपको ऐप में कुछ भी जोड़ने की आवश्यकता नहीं है .xaml –

0

@Damian Leszczynski - Vash का जवाब काफी 4 विशिष्ट प्रश्न के लिए कहा शामिल किया गया। Application.Exit() पर आपके अंतिम प्रश्न के लिए, यह एक ऐसी घटना है जिसे आप सब्सक्राइब कर सकते हैं, न कि जिस विधि को आप कॉल कर सकते हैं।इसका उपयोग इस तरह किया जाना चाहिए:

Application.Current.Exit += CurrentOnExit; 
//this.Exit += CurrentOnExit; would also work if you're in your main application class 

... 

private void CurrentOnExit(object sender, ExitEventArgs exitEventArgs) 
{ 
    //do some final stuff here before the app shuts down 
} 
संबंधित मुद्दे