我有一个Timer
我每隔10秒就会运行一次,将我应用中的本地数据同步回服务器。
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);
这是实现我目标的最佳途径还是有更好的方法可以阻止它同时执行?
答案 0 :(得分: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();
愿它有所帮助。