имам 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);
Това ли е най-добрият начин да постигнете това, което съм след или има ли по-добър начин да го спрете да изпълнява едновременно?
Отговори:
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();
Нека помага.