![]() |
1
5
你的问题不是线程工具。每次有一个计时器“滴答”时,您都会创建自己的线程。我不知道workerthreadfunc1和workerthreadfunc2在做什么,但如果它们不返回,您将继续创建越来越多的线程。 如果您使用的是System.Timers.Timer,那么经过的事件已经在线程池线程上。为什么不在那里执行你想要的操作? |
![]() |
2
1
不要生成新线程,而是使用 ThreadPool . |
![]() |
3
1
我会改变设计,不包括任何计时器。开始时,创建3个线程,并在循环的开始或结束时围绕在WorkerThreadFunc1和WorkThreadFunc2中完成的工作放置一个循环。请在循环的开始或结束处睡眠适当的时间(15秒、1分钟等)。您可能希望在循环开始时添加一些检查,以查看是否有人试图停止服务,或者是否已经启动了另一个服务。 |
![]() |
4
1
您只能尝试创建尚未创建的线程。在类级别声明WorkerThread1并执行以下操作:
|
![]() |
5
1
@马尔75 @扎克 这两个都是很好的建议,但为什么不:
但是,这假设您的任务相对较轻 如果您执行了像SQL查询和插入之类的较重的任务,只需确保线程在完成后自行终止。 您可能会出现溢出,因为您的15秒和15分钟工作线程的执行时间分别超过15秒和1分钟,如果这是真的,您将更快地添加线程,然后终止线程,最终导致溢出,正如msergeant试图说的那样,只有在旧工作线程完成时才添加新线程。 |
![]() |
PHPLover · “支持PHP扩展或功能的端口”实际上是什么意思? 1 年前 |