[英]Evaluating DateTime.Now.Millisecond in a loop - C#
我是編程新手。 我正在嘗試使用System.Timer
以毫秒為單位評估時間,以在current time
與past time + a number of milliseconds
匹配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);
}
DateTime.Now.Milisecond
不會以毫秒為單位返回時間,而是以DateTime
實例表示的時間點的實際毫秒為單位(因此,它將始終在0到999之間)。 此外,由於您在多線程系統上運行,因此您的條件可能永遠不會在評估結果為true
的確切時間執行(寫入控制台也會浪費時間)。
因此,您可以考慮更改條件並利用Timespan
類:
DateTime timeStart = DateTime.Now;
while (true)
{
DateTime timeNow = DateTime.Now;
TimeSpan difference = (timeNow - timeStart);
if (difference.TotalMilliseconds >= 500) { break; }
Console.WriteLine(timeNow);
}
毫秒是時間的組成部分,而不是時間跨度。 你想要類似的東西
DateTime start = DateTime.Now;
while (true)
{
if ((DateTime.Now - start ).TotalMilliseconds>500) // Is a timespan
{ break; }
Console.WriteLine(timeNow);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.