Search code examples
c#.netconsole-applicationapplication-shutdown

How to call event before Environment.Exit()?


I have a console application in C#. If something goes wrong, I call Environment.Exit() to close my application. I need to disconnect from the server and close some files before the application ends.

In Java, I can implement a shutdown hook and register it via Runtime.getRuntime().addShutdownHook(). How can I achieve the same in C#?


Solution

  • You can attach an event handler to the current application domain's ProcessExit event:

    using System;
    class Program
    {
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.ProcessExit += (s, e) => Console.WriteLine("Process exiting");
            Environment.Exit(0);
        }
    }