编程语言
首页 > 编程语言> > C#-在控制台应用程序中精确使用Thread.Sleep

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