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 将有足够的可用线程来运行每个任务吗?如果我将 MaxThreads 设置为 7,我以后会不会遇到问题,因为这些线程永远不会中止?将其设置为更高的值是否安全?
编辑:
我总是希望所有 7 个线程同时运行,并且它们永远不会中止 - 我什至应该使用线程吗?有没有其他更适合这种永久运行任务的东西?
每个任务每 x 分钟运行一个特定的方法。
最佳答案
这不是对线程池的适当使用。只需创建普通线程,因为它们是长期存在的。创建线程的开销无关紧要,因为您只会创建它们一次。
关于c# - 这是对 ThreadPool 的适当使用吗?我能确定它会为每个任务启动一个线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/719751/