Quitter correctement une application en C#

Muhammad Maisam Abbas 11 décembre 2023
  1. Quitter une application console avec la fonction Environment.Exit() en C#
  2. Quitter une application console avec la fonction Application.Exit() en C#
  3. Quitter correctement une application avec les fonctions Environment.Exit() et Application.Exit() en C#
  4. Quitter l’application avec la méthode Application.ExitThread()
  5. Conclusion
Quitter correctement une application en C#

Quitter une application C# de manière propre est un aspect critique du développement de logiciels, et C# propose plusieurs méthodes pour atteindre cet objectif. Que vous souhaitiez terminer l’application entière ou sortir de threads spécifiques tout en préservant les autres, comprendre ces méthodes est essentiel pour garantir une terminaison propre et contrôlée de l’application.

Dans cet article, nous explorerons différentes méthodes pour quitter une application C#, notamment Environment.Exit(), Application.Exit() et Application.ExitThread(). Nous examinerons leurs cas d’utilisation, leurs scénarios et les meilleures pratiques.

Quitter une application console avec la fonction Environment.Exit() en C#

La fonction Environment.Exit(exitCode) est utilisée pour terminer une application entière avec le exitCode comme code de sortie en C#. La fonction Environment.Exit() met fin à l’application courante dans son ensemble et renvoie un code de sortie au système d’exploitation actuel.

La méthode Environment.Exit() fait partie de l’espace de noms System en C# et permet de terminer de force une application.

C’est un outil puissant pour garantir qu’une application peut se terminer proprement, même en présence d’erreurs inattendues ou de conditions exceptionnelles. Voici comment fonctionne cette méthode :

Signature de la méthode

La méthode Environment.Exit() a un seul paramètre : un entier représentant le code de sortie. Le code de sortie est une valeur numérique qui communique la raison de la terminaison de l’application au système d’exploitation.

Par convention, une valeur de 0 indique généralement une sortie réussie et normale, tandis que des valeurs différentes de zéro peuvent être utilisées pour indiquer des erreurs ou des conditions de sortie spécifiques.

Utilisation de base

Pour utiliser la méthode Environment.Exit(), il suffit de l’appeler dans votre code C#, en passant un code de sortie approprié en argument. Voici un exemple de base :

Environment.Exit(0);  // Exit the application with a success code

Dans cet exemple, l’application est quittée avec un code de sortie de 0, indiquant une terminaison réussie.

Sortie normale de l’application

Voici un exemple de code ci-dessous.

using System;

namespace exit_application {
  class Program {
    static void Main(string[] args) {
      Console.WriteLine("The Text before Exit");
      Environment.Exit(0);
      Console.WriteLine("The Text after Exit");
    }
  }
}

Sortie :

The Text before Exit

Le code ci-dessus n’affiche que Le texte avant la sortie car nous quittons complètement l’application avec la fonction Environment.Exit(0) avant la ligne Console.WriteLine("Le texte après la sortie"). La fonction Environment.Exit() peut être utilisée à la fois avec des applications basées sur la console et des applications WinForms.

Gestion d’une sortie d’erreur

Disons que vous développez un utilitaire en ligne de commande et qu’une erreur se produit pendant son exécution. Vous pouvez utiliser Environment.Exit() pour quitter l’application avec un code d’erreur approprié :

using System;

class Program {
  static void Main() {
    try {
      // Simulate an error
      throw new Exception("An error occurred.");
    } catch (Exception ex) {
      Console.WriteLine($"Error: {ex.Message}");

      // Exit the application with a non-zero exit code to indicate an error
      Environment.Exit(1);
    }
  }
}

Sortie :

Error: An error occurred.

Error: Command failed: timeout 7 mono HelloWorld.exe

Dans cet exemple, lorsqu’une erreur est rencontrée, l’application quitte avec un code de sortie de 1, indiquant qu’une erreur s’est produite.

Quitter une application console avec la fonction Application.Exit() en C#

La fonction Application.Exit() termine toutes les boucles de messages démarrées avec la fonction Application.Run() et ferme ensuite toutes les fenêtres de l’application courante en C#.

La méthode Application.Exit() fait partie de l’espace de noms System.Windows.Forms et est principalement utilisée dans les applications Windows Forms pour permettre une sortie contrôlée et élégante.

Contrairement à certaines autres méthodes qui terminent de force une application, Application.Exit() permet à votre application d’effectuer des opérations de nettoyage nécessaires et de gérer des événements avant de se terminer. Examinons les détails de son fonctionnement et quand l’utiliser.

Signature de la méthode

La méthode Application.Exit() a une signature simple, ne nécessitant aucun paramètre. Vous pouvez l’appeler directement dans votre code C# pour lancer le processus de sortie :

System.Windows.Forms.Application.Exit();

Utiliser la méthode Application.Exit() est simple. Vous placez généralement l’appel à cette méthode dans un gestionnaire d’événement pour une action utilisateur ou un événement de l’application qui indique la nécessité de quitter. Voici un exemple basique :

using System;
using System.Windows.Forms;

namespace MyWindowsApp {
  public partial class MainForm : Form {
    public MainForm() {
      InitializeComponent();
    }

    private void exitButton_Click(object sender, EventArgs e) {
      // Perform any necessary cleanup or validation here
      // ...

      // Exit the application gracefully
      System.Windows.Forms.Application.Exit();
    }
  }
}

Dans cet exemple, le gestionnaire d’événement boutonQuitter_Click est déclenché lorsqu’un bouton est cliqué. Avant d’appeler Application.Exit(), vous pouvez ajouter du code pour effectuer toute opération de nettoyage ou de validation spécifique à votre application.

Nous avons fermé une application WinForms et tous les threads qui y étaient associés avec la fonction Application.Exit() en C#. Cette méthode est préférable à la fonction Environment.Exit() car la fonction Environment.Exit() ne termine pas toutes les boucles de messages de l’application.

Quitter correctement une application avec les fonctions Environment.Exit() et Application.Exit() en C#

Nous pouvons utiliser la combinaison des fonctions Environment.Exit() et Application.Exit() pour quitter correctement une application en C#. Voici un exemple de code qui montre comment bien fermer une application en combinant les fonctions Environment.Exit() et Application.Exit() en C#.

using System;
using System.Windows.Forms;

if (Application.MessageLoop == true) {
  Application.Exit();
} else {
  Environment.Exit(1);
}

Dans le code ci-dessus, nous fermons l’application avec la fonction Application.Exit() si la fonction Application.Run() a été appelée auparavant dans l’application. Sinon, nous fermons l’application avec la fonction Environment.Exit(1) en spécifiant 1 comme code de sortie vers le système d’exploitation.

Quitter l’application avec la méthode Application.ExitThread()

La méthode Application.ExitThread() fait partie de l’espace de noms System.Windows.Forms et est généralement utilisée dans les applications Windows Forms.

Contrairement à certaines autres méthodes qui quittent toute l’application, Application.ExitThread() vous permet de quitter un thread d’application spécifique, tout en laissant d’autres threads en cours d’exécution et en préservant la fonctionnalité de l’application.

Signature de la méthode

La méthode Application.ExitThread() nécessite un seul paramètre, qui est une instance de la classe Thread représentant le thread à quitter. Elle vous permet de préciser exactement quel thread terminer :

System.Windows.Forms.Application.ExitThread(Thread thread);

Utiliser la méthode Application.ExitThread() est simple. Vous placez généralement l’appel à cette méthode dans un gestionnaire d’événement pour une action utilisateur ou un événement qui indique la nécessité de quitter un thread spécifique. Voici un exemple basique :

using System;
using System.Threading;
using System.Windows.Forms;

namespace MyWindowsApp {
  public partial class MainForm : Form {
    private Thread workerThread;

    public MainForm() {
      InitializeComponent();
    }

    private void startButton_Click(object sender, EventArgs e) {
      // Create and start a new thread
      workerThread = new Thread(WorkerMethod);
      workerThread.Start();
    }

    private void stopButton_Click(object sender, EventArgs e) {
      // Check if the workerThread is running
      if (workerThread != null && workerThread.IsAlive) {
        // Exit the workerThread gracefully
        System.Windows.Forms.Application.ExitThread(workerThread);
      }
    }

    private void WorkerMethod() {
      // Simulate work in the worker thread
      Thread.Sleep(5000);
    }
  }
}

Dans cet exemple, l’application démarre un thread de travail lorsque le bouton “Démarrer” est cliqué. Le bouton “Arrêter” déclenche le gestionnaire d’événement boutonArreter_Click, qui vérifie si le thread de travail est en cours d’exécution, et si tel est le cas, le quitte proprement en utilisant Application.ExitThread(threadTravail).

Conclusion

Dans cet article complet, nous avons exploré différentes méthodes pour quitter une application C#, chacune ayant des objectifs distincts et offrant un contrôle précis sur le processus de terminaison.

  • Environment.Exit() : Cette méthode vous permet de terminer toute l’application avec un code de sortie, ce qui la rend adaptée pour signaler la réussite ou gérer les erreurs. C’est un outil polyvalent pour garantir des sorties propres, même en présence d’erreurs inattendues ou de conditions exceptionnelles.
  • Application.Exit(): Principalement utilisée dans les applications Windows Forms, cette méthode facilite les sorties contrôlées et fluides. Elle permet d’exécuter des opérations de nettoyage et de traitement d’événements avant la sortie, garantissant une expérience conviviale pour l’utilisateur et une gestion des ressources efficace.
  • Application.ExitThread(): Dans les applications multi-threadées, cette méthode vous permet de quitter des threads spécifiques tout en maintenant les autres en vie. Elle préserve la fonctionnalité de l’application et évite les fuites de ressources, offrant un contrôle précis sur la terminaison des threads.
Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Article connexe - Csharp Console