如何获得WPF游戏中的当前时间?(没有XNA)

Joa*_*nge 7 .net c# wpf timer

我正在尝试制作一款类似app的小游戏,但需要足够准确的时间来评估游戏.

我看到一些使用此方法调用的java版本System.nanoTime.

它有.NET版本吗?

更重要的是,我正在寻找一种可以用来评估世界的计时器.我应该使用实际的定时器控件并订阅吗?

此外,游戏评估的是与UI线程不同的线程.以防这有所不同.

Dav*_*ite 5

DateTime.Now在纳秒范围内没有实际分辨率.Tick是100纳秒的"块"时间,但DateTime.Now 不解析每个Tick.我相信最低分辨率DateTime.Now10毫秒左右.如果你DateTime.Now很快打电话两次,你会得到相同的答案.你只能在大约10毫秒左右的时间内看到它,具体取决于你在呼叫它的周期中的位置.

秒表类具有更精细的分辨率DateTime.Now.我相信它会解决到毫秒级,这应该会给你足够的分辨率来确定你的游戏评估代码是否表现得足够好.有一个很好的例子可以在提供的链接上对比Stopwatch和DateTime.

此外,可以使用Frequency字段和GetTimestamp方法代替非托管的Win32 API QueryPerformanceFrequency和QueryPerformanceCounter.


Sam*_*Axe 4

System.Threading.Timer 的分辨率为 1ms。如果您需要更高分辨率,您可以在 kernel32.dll 中调用 QueryPerformanceFrequency() 和 QueryPerformanceCounter()