How to call event before Environment.Exit()?

.net, application-shutdown, c#, console-application

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);
    }
}

Problem

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#?

Original source