Today I was doing some experimenting with some ideas and I created a console
application to try things out in. From a certain function I started to type
Application.Exit() and I quickly realized the rookie mistake. The
Application class is part of the
System.Windows.Forms namespace, and
therefore, it's not the optimal way to terminate your console application. For
that there is
Environment.Exit(-1)... But this situation begs the
question... what is the difference between the two statements:
They both get you what you want, which is to halt your application. But there are some differences between the two methods under the hood, according to the Microsoft documentation:
- System.Environment.Exit(): Terminates the current process and gives the underlying operating system the specified exit code.
- System.Windows.Forms.Application.Exit(): Informs all message loops that they must terminate, and then closes all application windows after the messages have been processed.
My take from this is that you always want to use
Application.Exit() in a
WinForms application in order to terminate things as gracefully as possible. In
a console application you won't have the
Application class available (unless
you specifically import it) so just call
Also remember that there usually are several things you may want to do before terminating everything, such as persisting some objects, saving some settings, closing open files, etc. It is your responsibility to do those tasks before terminating... Provided you can control that and you are not crashing from an unhandled exception.