CSharp - C# 计时器需要帮助才能禁用计时器,直到代码执行然后重新启动计时器 当前高的CPU: (

  显示原文与译文双语对照的内容

基本上我想把这个计时器程序放在一起有一个问题。 在启动程序时,它将使用一个稳定的25% CPU,但每次定时器触发时,计时器会在CPU上增加另外 25%个,这样就会在 4th 通道上增加。

我接到它并不是正确的释放计时器,但是我是新的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");
 }
}

时间: 原作者:

你可能正在寻找类似这样的内容:


private static System.Timers.Timer aTimer = new System.Timers.Timer();

//This method will be called at the interval specified in EnableTimer
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
 aTimer.Enabled = false;//stop timer
 IpCheck();
 aTimer.Enabled = true;//restart timer so this method will be called in X secs
}

private static void EnableTimer()
{
//Set the Interval to x seconds.
 aTimer.Interval = 10000;
 aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

 aTimer.Enabled=true;//actually starts timer
}

原作者:

我不会退出,为什么你有cpu负载,但我会做到:


private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
 ((Timer)source).Enabled = false;
 IpCheck();
 ((Timer)source).Enabled = true;
}

并且不要在方法调用中释放计时器。

原作者:

问题是他在。类中创建一个,因这里当加载。时,它加载另一个。负载另一个。 它认为你可以


public class Timer1 
{

System.Timers.Timer aTimer = new System.Timers.Timer();
public static void Main()
{

 Timer1 tTimer = new Timer1();//<-this line right here is killing you 
//remove it, as I don't see anyuse for it at all

在这一行里


 tTimer.EnableTimer();

说吧


EnableTimer();
//or
this.EnableTimer();

你不需要实例化你正在工作的类,只要它关注它已经被实例化了。

原作者:

static System.Timers.Timer aTimer = new System.Timers.Timer();

 private static void OnTimedEvent(object source, ElapsedEventArgs e)
 {

aTimer.Enabled=false;

 IpCheck();

aTimer.Enabled=true;
 }

 private static void EnableTimer()
 {
//Set the Interval to x seconds.
 aTimer.Interval = 10000;
 aTimer.Enabled=true;
 aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

 }
private static void DisableTimer()
{


aTimer.Elapsed -= new ElapsedEventHandler(OnTimedEvent);
aTimer.Enabled = false;


}

没有测试过,只有一个样本我会在你的地方做,所有添加的行都没有标签。

...