这是ThreadPool的合适用法吗?我可以确定它会为每项任务启动一个线程吗?

Mat*_*ley 1 .net c# multithreading windows-services threadpool

    protected override void OnStart(String[] args)
    {
        ResultManager.PrepareCache();
        ThreadPool.QueueUserWorkItem(ResultQueue.Process);
        ThreadPool.QueueUserWorkItem(StatusUpdater.UpdateStatus);
        ThreadPool.QueueUserWorkItem(GeneralQueue.RestartHungTests);
        ThreadPool.QueueUserWorkItem(ResultManager.SyncroniseResultsTable);
        ThreadPool.QueueUserWorkItem(GeneralQueue.RecoverLostResults);
        ThreadPool.QueueUserWorkItem(BrowserTestStartInfo.FillQueues);
        ThreadPool.QueueUserWorkItem(MailAppAccount.FillQueues);
    }
Run Code Online (Sandbox Code Playgroud)

这些任务中的每一个都在Windows服务的生命周期内运行.我一直坚持使用ThreadPool来做这种事情,我应该只是开始正常的线程吗?我可以确定ThreadPool有足够的线程来运行每个任务吗?如果我将SetMaxThreads设置为7,我会在以后遇到问题,因为这些线程永远不会中止吗?将它设置为更高的东西是否安全?


编辑:

我总是希望所有7个线程同时运行,它们永远不会中止 - 我是否应该使用线程?还有其他更适合这种永久性运行的任务吗?

每个任务每x分钟运行一个特定的方法.

Joh*_*ers 11

这不适合使用线程池.只需创建正常的线程,因为它们是长寿的.创建线程的开销并不重要,因为您只需创建一次.