C#のタイマーを同期させることは可能でしょうか?
private void Form1_Load(object sender, EventArgs e)
{
AutoResetEvent autoEvent = new AutoResetEvent(false);
StatusChecker statusChecker = new StatusChecker();
// Create the delegate that invokes methods for the timer.
TimerCallback timerDelegate =
new TimerCallback(statusChecker.CheckStatus);
// タイマー起動
Console.WriteLine("{0} タイマーを起動します.\n",
DateTime.Now.ToString("h:mm:ss.fff"));
System.Threading.Timer stateTimer =
//最後の2つの値→初動実行までの時間,実行間隔(ミリ秒)
new System.Threading.Timer(timerDelegate, autoEvent, 0, 10000);
// タイマーの待機時間は-1にすると無制限になる(有限にしたい場合はミリ秒で記述)
autoEvent.WaitOne(-1, false);
//タイマーの開放
stateTimer.Dispose();
}
class StatusChecker
{
public StatusChecker()
{
}
// This method is called by the timer delegate.
public void CheckStatus(Object stateInfo)
{
AutoResetEvent autoEvent = (AutoResetEvent)stateInfo;
//ここに一定時間で実行したい処理を書く
MessageBox.Show("テスト");
}
}
例えば、 「テスト」という表示メッセージを消さなければ、
一定時間後、タイマーで再び「テスト」と表示することをスルーしたいのですが、
フラグによる操作しか方法はないでしょうか?
visual sutudio express 2015 windows 10 (64bit)