/ /タイマー - 前回完了するまで再実行しない - C#、タイマー

タイマー - 前回完了するまで再実行しない - C#、タイマー

私は Timer これを10秒ごとに実行して、アプリのローカルデータをGoogleのサーバーに同期させます。

public Timer syncTimer;
syncTimer = new Timer((o) =>
{
this.syncToServer();

}, null, 0, 10000);

私は問題があります。私のsyncToServerが実行に10秒以上かかると、それ自身の上を移動します。私は実行中にタイマーを一時停止するために次のことを行うことを検討しており、一度完了すると再起動します。

public Timer syncTimer;
syncTimer = new Timer((o) =>
{
syncTimer.Change(Timeout.Infinite , Timeout.Infinite); //Stop the timer
this.syncToServer();
syncTimer.Change(10000 , 10000); //Restart the timer
}, null, 0, 10000);

これは、私が何をしているのかを実現する最善の方法ですか、同時に実行するのを止めるより良い方法ですか?

回答:

回答№1は1

たぶんSystem.Timers.Timerを使うことができます。System.Threading.Timerよりも理解しやすいでしょう。

var timer = new System.Timers.Timer(1000);
timer.AutoReset = false;
timer.Elapsed += (sender, e) => {
this.syncToServer();
// maybe Thread.Sleep(100000);
timer.Start();
};
timer.Start();

それが助けてくれますか?