【发布时间】:2017-12-14 19:06:18
【问题描述】:
我正在使用 System.Timers.Timer 来处理作业。 示例代码如下。
private static Timer timer = null;
timer = new Timer(INTERVAL_MIN * 1000 * 60);
timer.Elapsed += timer_Elapsed;
timer.start();
private static void timer_Elapsed(object sender, ElapsedEventArgs e)
{
Work();
}
在运行此作业几个小时后。 我收到了这个错误
“线程池中没有足够的空闲线程来完成操作。”
这个定时器线程在使用后没有被释放吗?我们需要处理这个吗?
【问题讨论】:
-
你工作()是否太耗时???..在此之后你没有创建更多线程......
-
yes Work() 正在执行繁重的操作,平均处理时间为 15 分钟。
-
好的,然后按照我的建议尝试......我为我的 Windows 服务做了同样的事情,它每天都会生成报告......
-
INTERVAL_MIN的值是多少?我们还需要更好地了解Work()的作用。 -
INTERVAL_MIN 设置为 60,工作正在调用 Web 服务并更新本地数据库
标签: c# multithreading timer threadpool