C#-在控制台应用程序中精确使用Thread.Sleep
作者:互联网
我是一名初学程序员,学习c#,并且想在控制台窗口中制作基于文本的蛇游戏.现在,游戏运行良好,但是我使用Thread.Sleep()方法将代码暂停特定的毫秒数时遇到问题.
问题是,每当我尝试将游戏暂停特定时间时,它似乎就会暂停几毫秒.而且由于那是蛇游戏,所以这是一个很大的问题.
我试图做的是:
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毫秒才能运行,因此我尝试确定该代码,并从每次移动之间等待的时间中减去它.有时它可以正常工作,但更多时候控制台标题称它花费了31毫秒…
我真的很感谢任何建议,如果您知道一种在正确的时间内暂停代码运行的更好方法,我将很高兴知道:)
求助:我最终使用了秒表,如塔米尔建议,感谢所有帮助:D的人
解决方法:
好吧,对于非常精确的计时,您应该使用multimedia计时器.
下一个最佳选择是秒表
标签:thread-sleep,multithreading,sleep,c 来源: https://codeday.me/bug/20191025/1929939.html