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);
    }
这些任务中的每一个都在Windows服务有效期内运行。对于这种事情,我一直坚持使用ThreadPool,我应该只启动普通线程吗?我可以确定ThreadPool将有足够的线程来运行每个任务吗?如果我将SetMaxThreads设置为7,由于这些线程永不中止,我以后是否会遇到问题?将其设置为更高的值是否安全?

编辑:
我一直希望所有7个线程同时运行,并且它们永远不会中止-我什至应该使用线程?还有其他更适合这种永久运行的任务吗?
每个任务每x分钟运行一次特定的方法。

最佳答案

这不是对线程池的适当使用。只需创建普通线程即可,因为它们的生命周期很长。创建线程的开销无关紧要,因为您只需创建一次即可。

关于c# - 这是对ThreadPool的适当使用吗?我可以确定它会为每个任务启动一个线程吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/719751/

10-12 07:10