Я работаю над проектом, который должен что-то делать каждые 24 часа. У меня есть таймер для этого, но когда я запускаю программу, я хочу, чтобы она задерживала таймер, когда он уверен, что он работает ночью.Задержка таймера один раз
Таймер:
timeForFitbitUpdate = 86400000; // Setting 24 hours of intervals
Timer aTimer = new Timer(10);
aTimer.Elapsed += new ElapsedEventHandler(RunEvent);
aTimer.Interval = timeForFitbitUpdate;
aTimer.Enabled = true;
Я попробовал этот код:
int delayTime = CalculateDelay();
var connectionString = ConfigurationManager.ConnectionStrings["VRT"].ConnectionString;
FitbitDataSave dataSave = new FitbitDataSave(connectionString);
await Task.Delay(delayTime);
dataSave.DoTimedWork();
но с другими закодированных миллисекунды как в таймере и задержка .. Задержка была установлена на 5 минут и таймер до 5 минут, и это заняло первый раз 10 минут, а после этого 11 минут и т. д.
Если у кого-то есть идеи, то pls share thnx :)
Вы можете использовать задачу, чтобы задержать начало таймера, например: 'Task.Factory.StartNew (() => {Секундомер sw = новый секундомер(); sw.Start(); while (sw.ElapsedMilliseconds! = DelayTime) {} aTimer.Enabled = true;}); ' –
@ m.rogalski, пожалуйста, не рекомендуйте интенсивный опрос CPU (или вообще опросить), у нас есть' Task.Delay() '/'Thread.Sleep() 'для этого (см. [this] (http://stackoverflow.com/a/5743843/1997232) ответ). – Sinatr
@ Sinatr Он до него, какой метод он будет использовать, чтобы ждать задержки. Я просто даю простой и читаемый пример –