
Environment.Exit does not run finally statements. It provides a way to kill a process in its physical sense on the operating system. Clean-up of your program's resources does not occur—finally statements are ignored.

First in this example we see how the Environment.Exit method is invoked and how it abruptly terminates the physical process and the "finally" control structure is never reached.
This method is located in the System namespace and it is a static method that receives one integer parameter, which is used as the exit code. The method asserts physical control on the process, disobeying the remaining logic in the high-level C# code.
This C# program uses the Environment.Exit method. It bypasses the finally block.
Program that calls Environment.Exit with finally [C#]
using System;
class Program
{
static void Main()
{
try
{
//
// Calls the Environment.Exit method and returns a zero status code.
// ... The finally statement is never reached.
//
Environment.Exit(0);
}
finally
{
Console.WriteLine("Finally statement");
}
}
}Result: The finally block statement is not executed.

Overview. This program describes the Main entry point, which uses the try/finally control structure. This block indicates a protected region of the code, where no matter what happens, the finally block is executed afterwards. However, the finally block is not executed if the physical process is terminated directly. The Environment.Exit method terminates the process and the statement in the finally block is never executed, as you can see by running the program.

We noted some uses of the Environment.Exit function in the C# programming language and the .NET Framework. The Environment.Exit function is also available in the VB.NET language. In some console applications, the control structure is such that it is hard to signal to the Main entry point to exit immediately. In this case, using Environment.Exit is acceptable.
Threading and Environment.Exit. Because Environment.Exit acts upon the process of your program, all threads executing inside the process will be terminated with no warning if you call it. If your process starts another process before calling Environment.Exit, it would not be terminated, however. The Environment.Exit provides no chance to recover from errors.
Alternative methods. There are other methods and statements that can exit from a C# console program or a Windows Forms program. It is usually simplest to use a return statement in the Main method to exit early from a console program. The Environment.FailFast method will abort the program by throwing an ExecutionEngineException.
Tip: The Application.Exit method has different characteristics in Windows Forms programs with regards to the event processing.

Exit provides a simple way to signal to the operating system that the physical process should be terminated. Control structures in the program—such as the finally statement or other threads—are terminated without any warning. This method is acceptable in some cases where it doesn't interfere with other logic in the application.
.NET Framework Info