I read on the other day that for long-running tasks my best bet is to manually create threads instead of using .NET’s thread pool or Task Parallel. I\'d really like someone
You are right, ThreadPool thread is lightweight and cheap since could be rescheduled to serve a new request from the ThreadPool, so as soon as thread operation is done, ThreadPool could reschedule the same thread for other operation, also you can manipulate by minimum threads count (ThreadPool.SetMinThreads()), so those would be alive until new requests are come. So this is a good solution for multiple lightweight operations, for instance you need to create a separate/new thread each few seconds.
Very good article on MSDN Magazine: Dedicated thread or a Threadpool thread?
Once the minimum number of threads is reached, the thread pool aims to limit the number of threads being created to one per 500 milliseconds. This is an intelligent mechanism, avoiding the expensive cost of creating a new thread when multiple thread pool threads may be released within that time period.
Since .NET 4.0 - Task Parallel Library is a good high-level abstraction and alternative for the manual thread management and synchronization, so your code would be less error prone. So just create a Task with TaskCreationOptions.LongRunning, I believe this would be the best investment in an application architecture from the maintability perspectives.
Useful reading: