【发布时间】:2010-08-20 12:45:48
【问题描述】:
我希望有人能对我可能发生的事情有所了解。以下是正在发生的事情的摘要。
我有一个应用程序可以做很多“事情”。它是一个相当庞大的应用程序,它使用许多线程进行大量数字运算。有几个计时器被使用。在很长一段时间内,计时器会停止持续调用 elapsed 处理程序。
例如:我有一个计时器设置为每秒经过一次。几个小时后,计时器开始随机触发延迟。如果我不重新启动应用程序,性能只会下降,并且计时器稍后会触发,最终会变成 3 或 4 秒,迫使我重新启动应用程序。我无法识别任何泄漏。 CPU 使用率没有上升,内存没有上升,并且服务器远未达到极限。谁能给我一些关于可能导致这种情况的想法?
private void Timer_Elapsed(object source, ElapsedEventArgs e)
{
if (seconds > 0)
{
seconds--;
timer.Start();
}
}
【问题讨论】:
-
内存使用量根本没有增加?我对这类问题的第一个怀疑是垃圾收集......
-
听起来您的系统运行速度越来越快,因此时间本身实际上正在变慢。尝试解开永动机。
-
.net 中有不止一个计时器类。你用的是哪一个? System.Thread.Timer、System.Threading.Timer、System.Windows.Forms.Timer
-
什么样的定时器?
System.Timers.Timer? -
我正在使用 System.Timers.Timer