有没有办法运行Timer它,以便它完全开始?
stateTimer = new Timer(someCallback, null, 0, 1000);
Run Code Online (Sandbox Code Playgroud)
这个将立即开始,重复每一秒,但问题是它将在我运行可能导致13:14:15.230启动的程序时正好启动.
我想13:14:15.000开始.就像是:
stateTimer = new Timer(someCallback, null, DateTime.Now.Date, 1000);
Run Code Online (Sandbox Code Playgroud)
那可能吗?
编辑:
执行控制台日志后:
Console.WriteLine($"Time: {DateTime.Now.ToString("HH:mm:ss.fff")}");
Run Code Online (Sandbox Code Playgroud)
我注意到1秒间隔实际上增加了一秒以上(每次迭代约1,02次),因此在50次迭代后会跳过一秒.我已经解决了我的问题,让计时器每800毫秒运行一次.不理想的解决方案,但它的工作原理,第二个永远不会被跳过(我在触发相同的秒两次没有问题).
stateTimer = new Timer(someCallback, null, 0, 800);
Run Code Online (Sandbox Code Playgroud)
不,这是不可能的.这将要求您确切知道CPU何时认为开始执行您的计时器代码是个好主意.即使你想要Thread.Sleep剩下的时间,它仍然不意味着代码是在你想要的毫秒级执行的.
相反,如果您只想对格式化执行此操作,则可以使用自定义日期/时间格式来执行此操作.
| 归档时间: |
|
| 查看次数: |
209 次 |
| 最近记录: |