MSDN, as well as many other sources, claim that worker threads in the thread pool are always background.
"Thread pool threads are background threads." (MSDN)
"Pooled threads are always background threads." (Threading in C#, Joseph Albahari)
I can easily make the worker thread non-background by setting
Thread.CurrentThread.IsBackground = false;
And the application will be waiting until the thread finishes.
What’s wrong with that?
When does the thread finish? When your method ends? I highly doubt that’s the case. The whole point of the thread pool is that once your thread is finished, it gets put back in the pool to be reused. Now you’ve let go of a thread, it’s gone back into the thread pool and your application is still running because it’s a foreground thread. There’s no way to get that thread back out to kill it.