Partage
  • Partager sur Facebook
  • Partager sur Twitter

Evenement Fermeture C# Console

    11 mai 2011 à 19:16:03

    Bonsoir,
    Je voudrais savoir comment soulever un évènement lorsque la console est fermée,

    Afin de pouvoir écrire des logs sur mon logiciel.

    Voila.

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      11 mai 2011 à 19:45:49

      Apparemment la méthode la plus simple pour réaliser ça est d'écouter l'événement ProcessExit de l'AppDomain courant:

      class Program
      {
          static void Main(string[] args)
          {
              AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit;           
             
              // code de l'application
          }
      
          static void CurrentDomain_ProcessExit(object sender, EventArgs e)
          {
              // code exécuté au moment de quitter le programme
          }
      }
      

      Source
      • Partager sur Facebook
      • Partager sur Twitter
        11 mai 2011 à 20:00:46

        J'avais déjà trouver ceci...
        J'avais mis cependant un handler pour la déclaration de l'evenment.

        Mais actuellement sa ne marche pas non plus.

        Voici le code actuel :
        static void AppClose(object o, EventArgs e)
        {
             ServeurTCP = null;
             Log L = new Log();
             L.LogMessageToAll("App Exited");
        }
        static void Main(string[] args)
        {
             AppDomain.CurrentDomain.ProcessExit += AppClose;  
        .....
        .....
        }
        

        avec un Break Point dans la fonction AppClose et rien ne se passe
        • Partager sur Facebook
        • Partager sur Twitter
          12 mai 2011 à 3:56:29

          Salut,

          après quelques recherche, voici ce que j'ai trouvé:
          delegate bool ConsoleEventHandlerDelegate( ConsoleHandlerEventCode eventCode );
          
          [DllImport("kernel32.dll")]
          static extern bool SetConsoleCtrlHandler( ConsoleEventHandlerDelegate
          handlerProc, bool add );
          
          // From WinCon.h.
          //
          enum ConsoleHandlerEventCode : uint
          {
             CTRL_C_EVENT = 0,
             CTRL_BREAK_EVENT = 1,
             CTRL_CLOSE_EVENT = 2,
             // 3 is reserved!
             // 4 is reserved!
             CTRL_LOGOFF_EVENT = 5,
             CTRL_SHUTDOWN_EVENT = 6
          }
          
          //Just be sure to stash the reference to the 
          //ConsoleEventHandlerDelegate in a static field 
          //somewhere so that it doesn't get GC'd out from under you while the
          //application is running (and before the callback occurs). Something like:
          
          class YourConsoleApp
          {
             static ConsoleEventHandlerDelegate consoleHandler;
          
             static YourConsoleApp()
             {
                consoleHandler = consoleHandler =
                      new ConsoleEventHandlerDelegate(ConsoleEventHandler);
                SetConsoleCtrlHandler(consoleHandler, true);
             }
          
             static bool ConsoleEventHandler( ConsoleHandlerEventCode eventCode )
             {
                // Handle close event here...
                switch( eventCode )
                {
                   case ConsoleHandlerEventCode.CTRL_CLOSE_EVENT:
                      break;
                }
          
                return(false);
             }
          
             static void Main()
             {
                // Your app here...
             }
          }
          


          J'espère que ça pourra t'aider.
          • Partager sur Facebook
          • Partager sur Twitter

          Evenement Fermeture C# Console

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown