基本上我对我试图放在一起的这个计时器程序有一个问题。在启动程序时,它将使用稳定的 25% CPU,我不介意,但每次计时器触发时,它都会在 CPU 上再增加 25%,所以在第 4 次通过时,我完全耗尽了。
我认为我没有在它触发后正确处理计时器,但我对 c# 很陌生,并且不确定如何去做。
我的计划的应对基本上是:
- 执行一些程序 - 一旦完成启动计时器
- 等到计时器结束,然后再次启动程序,禁用计时器直到完成
任何帮助将不胜感激 :)
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
IpCheck();
}
private static void EnableTimer()
{
System.Timers.Timer aTimer = new System.Timers.Timer();
// Set the Interval to x seconds.
aTimer.Interval = 10000;
aTimer.Enabled=true;
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Enabled = false;
aTimer.Dispose();
}
好的修订版如下 - 简化并排除了 ip 检查,所以它现在所做的只是显示一个消息框 - 这甚至不会再执行了:(
public class Timer1
{
System.Timers.Timer aTimer = new System.Timers.Timer();
public static void Main()
{
Timer1 tTimer = new Timer1();
tTimer.EnableTimer();
}
private void OnTimedEvent(object source, ElapsedEventArgs e)
{
aTimer.Enabled = false;
MessageBoxPrint();
aTimer.Enabled = true;
}
private void EnableTimer()
{
// Set the Interval to x seconds.
aTimer.Interval = 10000;
aTimer.Enabled=true;
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
}
public static void MessageBoxPrint()
{
MessageBox.Show("Testing");
}
}