我需要一個等待指定數量的DateTime.Ticks(約155 000)的函數。不幸的是,它與下面的函數不是真的(等了大約30萬蜱):睡眠特定的Ticks
private void sleep_ticks(long t)
{
long _start = DateTime.Now.Ticks + t;
int i = 0;
do
{
i++;
Console.WriteLine((DateTime.Now.Ticks - _start) + " => " + i);
if (DateTime.Now.Ticks >= _start)
break;
} while (true);
Console.WriteLine((DateTime.Now.Ticks - _start) + " < " + t + " -- " + i);
Console.ReadLine();
}
我加了一些調試輸出:-) 最後的值必須接近於0
這裏是輸出sleep_ticks(1):
-1 => 1; -1 => 2; -1 => 3; -1 => 4; -1 => 5; -1 => 6; -1 => 7; -1 => 8; -1 => 9; -1 => 10;
-1 => 11; -1 => 12; -1 => 13; -1 => 14; -1 => 15; -1 => 16; -1 => 17; -1 => 18; -1 => 19;
-1 => 20; -1 => 21; -1 => 22; -1 => 23; -1 => 24; -1 => 25; -1 => 26; -1 => 27; -1 => 28;
-1 => 29; 156262 < 1 -- 29;
沒有人有任何想法,爲什麼這可能是,或如何解決呢?
感謝和問候 羅伯特
Windows不是實時操作系統。可能發生的事情是您的程序被操作系統中的其他事件中斷。即使使用'Thread.Sleep',你唯一的保證就是隻要你請求,它至少會等待*。 –
看起來您已經重新創建了['Thread.Sleep'](http://msdn.microsoft.com/zh-cn/library/d00bd51t(v = vs.110).aspx),儘管需要將刻度轉換爲毫秒?您可能想要以一個緊密循環的形式持續檢查'DateTime.Now'將咀嚼您的CPU。 – StuartLC
Console.WriteLine尤其是帶有調試器的連接速度非常慢,它可能會延遲您的循環 – thumbmunkeys