【发布时间】:2014-09-28 13:34:22
【问题描述】:
我有一个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);
这是实现我所追求的最佳方式还是有更好的方式来阻止它同时执行?
【问题讨论】:
-
设置一个布尔标志怎么样?如果它现在正在执行(所以
boolean为真,只需跳过一次执行并在 10 秒内等待下一次执行? -
为此使用
lock块