小编Mik*_*e D的帖子

日期时间漂移 - 2小时后的奇怪问题

我有一个线程每40毫秒(25赫兹)生成一个网络数据包,它是一个无限循环(直到被告知停止),我正在使用thread.sleep.

当我构建数据包时,其中一个值是当前的GPS时间,使用DateTime.UtcNow并添加闰秒.

这在我开始时工作正常,但随着时间的推移漂移,大约2小时后,它落后了5秒.

我有一个Symmetrom GPS时间服务器,我正在使用他们的软件作为NTP客户端,它说PC上的累积漂移大约是1.2秒(我注意到的大多数是在PC关闭而不同步时漂移到NTP).

任何人都知道什么是错的?我知道thread.sleep不是完美的计时,而Windows不是RTOS,但漂移没有意义,丢帧会.

由于一些专有和ITAR问题,我无法发布代码,但我可以发布一个粗略的大纲:

while(!abort) { 
   currentTime = DateTime.UtcNow + leapSeconds ; 
   buildPacket(currentTime); 
   stream.Write(msg, 0, sendSize); 
   //NetworkStream Thread.Sleep(40); 
}
Run Code Online (Sandbox Code Playgroud)

我在Windows 7并使用Visual Studios 2010.

.net c# timing

6
推荐指数
1
解决办法
258
查看次数

标签 统计

.net ×1

c# ×1

timing ×1