I have a need to create multiple processing threads in a new application. Each thread has the possibility of being "long running". Can someone comment on the viability of the built in .net threadpool or some existing custom threadpool for use in my application?

Requirements : 

Works well within a windows service. (queued work can be removed from the queue, currently running threads can be told to halt)

Ability to spin up multiple threads.

Work needs to be started in sequential order, but multiple threads can be processing in parallel.

Hung threads can be detected and killed.

EDIT:

Comments seem to be leading towards manual threading. Unfortunately I am held to 3.5 version of the framework. Threadpool was appealing because it would allow me to queue work up and threads created for me when resources were available. Is there a good 3.5 compatable pattern (producer/consumer perhaps) that would give me this aspect of threadpool without actually using the threadpool?