计时器-don';t直到上一个操作完成后再重新运行
本文关键字:操作 重新运行 上一个 -don 计时器 | 更新日期: 2023-09-27 18:24:55
我有一个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);
这是实现我追求的最好的方式吗?还是有更好的方式来阻止它同时执行?
也许你可以使用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();
愿它有所帮助。