The other day I noticed that although the ThreadPool class contains a method called QueueUserWorkItem there is no guarantee that it will run functions in the order that they are queued. The code below was run on LinqPad and as you can see there are four methods Fast1, Fast2, Slow1 and Slow2. Even though I’ve called them in that order the ThreadPool ......