When does a multithreaded console application exit?
Solution 1:
A process ends when all foreground threads terminate
From Thread.IsBackground remarks on foreground threads vs background threads:
A thread is either a background thread or a foreground thread. Background threads are identical to foreground threads, except that background threads do not prevent a process from terminating. Once all foreground threads belonging to a process have terminated, the common language runtime ends the process. Any remaining background threads are stopped and do not complete.