【发布时间】:2014-09-26 15:59:41
【问题描述】:
我是编程新手。我正在尝试使用System.Timer 以毫秒为单位评估时间,以在current time 匹配past time + a number of milliseconds(满足未来条件)时打破while 循环。
有时它会成功退出循环,但有时它会作为无限循环运行。我认为这与毫秒时钟精度有关,但我不确定。变量的控制台输出显示timeFuture 是正确的。
我查看了Timespan,但不知道如何使用它。非常感谢您的任何反馈。
long end = 500; //500 milliseconds
long timeStart = DateTime.Now.Millisecond; //time in milliseconds
long timeFuture = timeStart + end;
long timeNow = 0;
while (true)
{
timeNow = DateTime.Now.Millisecond;
if (timeFuture - timeNow == 0) { break; }
Console.WriteLine(timeNow);
}
【问题讨论】:
-
既然你知道使用计时器,为什么还要这样做而不是使用
Timer? -
如果您能够每毫秒进行一次比较,您的算法理论上会起作用,但由于速度有限、多任务处理、准确性等原因,您无法做到这一点。最简单的解决方法是比较 '
-
@Servy - 作为一个实验 - 我真正的兴趣是了解 Ableton 等音乐音序器如何使用时间,他们的技术是什么。但在这个阶段,我在编程和接触对我来说真的太高级的主题方面也是一个完全的初学者——所以我正在涉足新手的东西以及阅读其他的东西
标签: c# timer milliseconds