正是利用了Thread.Sleep我是一個初學編程的學習誰C#和我想作一個基於文本的蛇遊戲控制檯窗口。現在,遊戲運行得很好,但是我遇到了使用Thread.Sleep()方法將代碼暫停特定毫秒數的問題。C# - 在控制檯應用程序
的問題是,每當我試圖暫停比賽的具體時間,這似乎停頓了幾毫秒長。而且因爲這是一個蛇遊戲,這是一個相當大的問題。
我試圖這樣做:
while (true)
{
double startingTime = DateTime.Now.TimeOfDay.Milliseconds;
//code
double lag = DateTime.Now.TimeOfDay.Milliseconds - startingTime;
Thread.Sleep((int)Math.Round(25 - lag));
double finalTime = DateTime.Now.TimeOfDay.Milliseconds - startingTime;
Console.Title = string.Format("Time: {0}", finalTime);
}
我知道一個事實,即代碼需要大約6毫秒的運行,所以我試圖MESURE並從中應該每隔之間等待的時間減去它移動。有時它工作正常,但往往不是控制檯標題說,花了31毫秒...
我真的很感激任何建議,如果你知道一個更好的方式來從精確的量運行暫停碼的時候,我會很高興知道:)
解決:最後我用秒錶一樣塔米爾建議,感謝大家誰幫助:d
嘗試使用System.Threading.Timer代替了Thread.Sleep,由於它的費用可以讓你的情況不同。詳情請看這裏 - https://stackoverflow.com/questions/391621/compare-using-thread-sleep-and-timer-for-delayed-execution –
@StepanNovikov即使計時器不會精確到幾毫秒內特別是在這樣短的時間內。 – Servy
如果你想做遊戲開發,你最好使用適當的遊戲開發框架/引擎。如果你不這樣做,你就會被迫自己建立基本框架(遊戲循環等)。 – Servy