我是新手編程。我試圖使用System.Timer
來評估時間(以毫秒爲單位),以便current time
與past time + a number of milliseconds
(符合未來條件)匹配時跳出while
循環。評估循環中的DateTime.Now.Millisecond - C#
有時它會成功退出循環,但有時它會作爲無限循環運行。我認爲它與毫秒時鐘精度有關,但我不確定。控制檯輸出的變量顯示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 2014-09-26 16:03:09
首先閱讀http://blogs.msdn.com/b/ericlippert/archive/2010/04/08/precision-and-accuracy-of-datetime.aspx然後 – asawyer 2014-09-26 16:03:17
如果你能夠做到的話,你的算法在理論上將起作用比較每毫秒,但由於速度有限,多任務,精度等原因,您無法做到這一點。最簡單的解決方法是比較'<0'而不是'== 0'(但是有更好的解決方案來實現你的目標) – Ondra 2014-09-26 16:04:17