ThreadPool.QueueUserWorkItem vs Task.Factory.StartNew
what is difference between the below ThreadPool.QueueUserWorkItem vs Task.Factory.StartNew If the above code is called 500 times for some long running task does it mean all the thread pool threads will be taken up? Or will TPL (2nd option) be smart enough to just take up threads less or equal to number of processors? If you're going to start a long-running task with TPL, you should specify TaskCreationOptions.LongRunning , which will mean it doesn't schedule it on the thread-pool. (EDIT: As noted in comments, this is a scheduler-specific decision, and isn't a hard and fast guarantee, but I'd