I read the following paragraph in the following answer from Reed Copsey:
Will values in my ThreadStatic variables still be there when cycled via ThreadPool?
The thread pool (by design) keeps the threads alive between calls. This means that the ThreadStatic variables will persist between calls to QueueUserWorkItem.
This behavior is also something you should not count on. The ThreadPool will (eventually, at its discretion) release threads back and let them end, and construct new threads as needed.
Under what conditions the threadpool eventually constructs new threads instead reusing them?