我已经在Windows服务中使用System.Threading.Timer
当我设置了1分钟后执行定时器。从12:00:00开始。system.threading.timer无法工作
timer1[timer] =
new System.Threading.Timer(timerDelegate, obj, dueTime, interval);
计时器在此间隔
excuted12:00:00 12时○○分59秒 12时01分00秒 12时02分00秒 12时02分59秒
,但我想在
12:00:00到EXCUTE12:01:00 12时02分00秒 12:03:00
为什么计时器开始在12点〇〇分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中的相同的应用程序它的沃金完美,但在Windows 7 & Windows Server 2008它无法正常工作。
如何解决Threading.Timer
中的这个问题?
简短的回答是:不要使用'Threading.Timer'。这是不准确的。您需要使用高分辨率多媒体计时器。例如,请参阅[本文](http://www.codeproject.com/Articles/5501/The-Multimedia-Timer-for-the-NET-Framework)。 – AVIDeveloper 2012-02-24 13:07:47
它在Windows XP中的工作完美,为什么不在Windows 7 – user847455 2012-02-24 13:19:52
也许Win7机器繁忙,而WinXP更加闲置。一个很好的检查就是将你的WinXP机器与很多进程重叠,看看你的解决方案是否仍然有效。有了多媒体计时器,它会。 – AVIDeveloper 2012-02-24 13:23:23