Я использовал System.Threading.Timer
в службе windows, когда я установил таймер для запуска через 1 минуту. начиная с 12:00:00.system.threading.timer не работает
timer1[timer] =
new System.Threading.Timer(timerDelegate, obj, dueTime, interval);
таймер excuted на этом интервале
12:00:00 12:00:59 12:01:00 12:02:00 12:02:59
, но я хочу, чтобы в
преобразования приложений12:00:00 12:01:00 12:02:00 12:03:00
почему таймер начал в 12:00:59?
я поставил остаток для выполнения следующего кода
декларация:
_interval[timer] = interval;
_startTime[timer] = DATeTime + dueTime;
используется в методе таймера обратного вызова
long elapsedMs = Convert.ToInt64((dt - _startTime[timer]).TotalMilliseconds);
long intervalMs = Convert.ToInt64(_interval[timer].TotalMilliseconds);
long remainder = elapsedMs % intervalMs;
if (remainder != 0L)
{
timer1[timer].Change(
_interval[timer] - TimeSpan.FromMilliseconds(remainder),
_interval[timer]);
}
При использовании того же приложения в Windows XP это WOKING отлично, но в windows 7 & windows server 2008 он не работает.
Как решить эту проблему в Threading.Timer
?
Короткий ответ: не используйте 'Threading.Timer'. Это неверно. Вам нужно будет использовать мультимедийный таймер высокого разрешения. См. [Эту статью] (например, http://www.codeproject.com/Articles/5501/The-Multimedia-Timer-for-the-NET-Framework). – AVIDeveloper
его работа в windows XP отлично почему не в окнах 7 – user847455
Возможно, машина Win7 занята, а WinXP более простаивает. Хорошей проверкой было бы перегрузить вашу машину WinXP множеством процессов и посмотреть, работает ли ваше решение. С мультимедийными таймерами это будет. – AVIDeveloper