基本的に、私がまとめようとしているこのタイマープログラムに問題があります。プログラムを開始すると、私は気にしない安定した 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");
}
}