我有一个C#的Windows服务,它启动了多个对象(类库)。每个对象都有自己的“处理”逻辑,通过使用ThreadPool
启动了多个长时间运行的处理线程。这里有一个示例:
System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(WorkerThread_Processing));
这很好用。我的应用程序没有问题,我的线程也工作得很好。
现在,为了进行回归测试,我使用C#控制台应用程序启动相同的对象,而不是Windows服务。它调用完全相同的代码(因为它调用相同的对象),但 WorkerThread_Processing
方法在启动前会延迟最多20秒。
我已经切换了从 ThreadPool
到 Thread
,并且问题解决了。这里可能发生了什么? 我知道我没有超过 MaxThreads
计数(最多启动20个线程)。
ThreadPool.QueueUserWorkItem(o => Console.WriteLine("test"));
,它会出现同样的问题吗? - RandomEngy