Threadpool正在被Windows服务问题使用

ali*_*ce7 1 c# windows multithreading threadpool

我创建了一个Windows服务,目前有三个计时器.第一个计时器每15秒唤醒一次,第二个计时器每分钟唤醒一次.第三个计时器每天都在醒来.

问题是这些是每次都会产生新的线程,而且一次线程池完全用完了.这就是产生3个线程并且不会产生更多的新线程.

我的代码看起来像这样:

protected Onstart()
{
  var timer1  = new TImer();
  timer.Elapsed += Event1;
  timer1.interval = 60000;
  timer1.start();

  var timer2  = new TImer();
  timer2.Elapsed += Event2;
  timer2.interval = 60000;
  timer2.start();
}

private Event1(object,elapsedeventargs)
{
  var workerthread1 = **new thread**(workerthreadfunc1)
  workerthread1.start();
}

private Event2(object,elapsedeventargs)
{
  var workerthread2 = **new thread**(workerthreadfunc2)
  workerthread2.start();
}
Run Code Online (Sandbox Code Playgroud)

因此,您可以看到它正在创建新线程,它将在某个时刻耗尽线程池中的所有线程并突然停止Windows服务.目前它正在停止并淹没活动ID为5000的evet日志.

Mos*_*evi 5

您的问题不在于ThreadPool.每当你的一个计时器"滴答"时,你就会创建自己的线程.我不知道workerthreadfunc1和workerthreadfunc2正在做什么,但如果他们没有返回,你将继续创建越来越多的线程.

如果您使用的是System.Timers.Timer,则已经在ThreadPool线程上使用了Elapsed事件.为什么不在那里进行你想要的操作?