c# - एक WPF ऐप प्रोग्रामेटिक रूप से कैसे बाहर निकलें?




.net shutdown (10)

कुछ सालों में मैं सी # (विनफॉर्म) का उपयोग कर रहा हूं, मैंने कभी भी WPF का उपयोग नहीं किया है। लेकिन, अब मुझे डब्ल्यूपीएफ पसंद है, लेकिन मुझे नहीं पता कि जब मैं फ़ाइल मेनू से बाहर निकलें मेनू आइटम पर क्लिक करता हूं तो मुझे अपने आवेदन से बाहर निकलने का तरीका कैसा लगता है।

मैं प्रयास कर चुका हूं:

this.Dispose();
this.Exit();
Application.ShutDown();
Application.Exit();
Application.Dispose();

कई अन्य के बीच। कुछ भी काम नहीं करता है।


अपने आवेदन से बाहर निकलने के लिए आप कॉल कर सकते हैं

System.Windows.Application.Current.Shutdown();

जैसा कि दस्तावेज़ में दस्तावेज़ में वर्णित है। शटडाउन विधि आप ShutdownMode निर्दिष्ट करके अपने एप्लिकेशन के शटडाउन व्यवहार को भी संशोधित कर सकते हैं:

निम्नलिखित परिस्थितियों में शटडाउन को विंडोज प्रेजेंटेशन फाउंडेशन (डब्ल्यूपीएफ) द्वारा निहित रूप से बुलाया जाता है:

  • जब ShutdownMode OnLastWindowClose पर सेट है।
  • जब ShutdownMode OnMainWindowClose पर सेट है।
  • जब कोई उपयोगकर्ता सत्र समाप्त करता है और सत्र समाप्ति ईवेंट या तो अनचाहे होता है, या रद्दीकरण के बिना संभाला जाता है।

कृपया यह भी ध्यान दें कि Application.Current.Shutdown(); केवल उस थ्रेड से बुलाया जा सकता है जिसने Application ऑब्जेक्ट बनाया है, यानी सामान्य रूप से मुख्य धागा।


आवश्यकतानुसार निम्न में से कोई भी उपयोग करें:

1।

 App.Current.Shutdown();
OR
 Application.Current.Shutdown();

2।

 App.Current.MainWindow.Close();
OR
 Application.Current.MainWindow.Close();

सभी विधियों के ऊपर Window क्लास की closing event को कॉल किया जाएगा और कुछ बिंदु पर निष्पादन रोक सकता है (कारण आमतौर पर एप्लिकेशन ' बंद होने से पहले डेटा को सहेजना चाहते हैं ?' या ' क्या आप पूरी तरह से बंद होने से पहले डेटा को सहेजना चाहते हैं? ')

3. लेकिन अगर आप बिना किसी चेतावनी के आवेदन को समाप्त करना चाहते हैं। नीचे प्रयोग करें

   Environment.Exit(0);

एक और तरीका आप यह कर सकते हैं:

System.Diagnostics.Process.GetCurrentProcess().Kill();

यह प्रक्रिया में आपके ऐप को मारने के लिए मजबूर करेगा हमेशा मल्टी थ्रेड एप्लिकेशन में काम करता है।

नोट: बस उस एप्लिकेशन के बारे में परवाह करें जिसने अन्य थ्रेड से फ़ाइलों में डेटा सहेज लिया है।


कैलिब्रर्न माइक्रो स्वाद

public class CloseAppResult : CancelResult
{
    public override void Execute(CoroutineExecutionContext context)
    {
        Application.Current.Shutdown();
        base.Execute(context);
    }
}

public class CancelResult : Result
{
    public override void Execute(CoroutineExecutionContext context)
    {
        OnCompleted(this, new ResultCompletionEventArgs { WasCancelled = true });
    }
}

प्रयत्न

App.Current.Shutdown();

मेरे लिए

Application.Current.Shutdown(); 

काम नहीं किया


बहुत सरल, नीचे दिए गए कोड का प्रयोग करें

Application.Current.Shutdown();

यदि आपको वास्तव में इसे बंद करने की आवश्यकता है तो आप Environment.Exit() उपयोग भी कर सकते हैं। Environment.Exit() लेकिन यह बिल्कुल भी अनुकूल नहीं है (प्रक्रिया को समाप्त करने की तरह)।

निम्नानुसार उपयोग करें:

Environment.Exit(0)


हम विंडो का MainWindow.xaml.cs करने के लिए MainWindow.xaml.cs फ़ाइल में यह this.Close() विधि का उपयोग कर सकते हैं।

या विंडो को बंद करने के लिए MainWindow.xaml.cs फ़ाइल में App.Current.Shutdown() विधि का MainWindow.xaml.cs


private void _MenuExit_Click(object sender, RoutedEventArgs e)
{
   System.Windows.Application.Current.MainWindow.Close();
}

//Override the onClose method in the Application Main window

protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
    MessageBoxResult result =   MessageBox.Show("Do you really want to close", "",
                                          MessageBoxButton.OKCancel);
    if (result == MessageBoxResult.Cancel)
    {
       e.Cancel = true;
    }
    base.OnClosing(e);
}




shutdown