2013-04-23 18 views
0

背景:有一个车辆动力学的发展,作为尝试添加现实行为,计算结果是实时执行的,并且以1:1的比例实时生成,即,现实生活中1秒=计算结果中1秒。Thread.Sleep不适用于Windows 8下的Silverlight 5

问题:在Windows XP/Vista/7甚至MacOS下,一切正常,但在Windows 8中,应用程序运行速度(似乎是)要慢两倍。

详细内容:1的时间比例: 延迟由

System.Threading.Thread.Sleep((Int32)time_delta) 

作为TIME_DELTA根据需要以匹配1执行的,计算出的。

在Windows 8下,现实生活中需要1秒的时间需要2秒,但我可以使用time_delta/2.0f,但看起来像一个脏伎俩。

问题:有没有适当的方法来解决这个问题?

参考文献: 我搜索,发现这似乎是报告的问题: Missing .NET features in Metro style application?

此链接说http://msdn.microsoft.com/en-us/library/d00bd51t.aspx说了Thread.Sleep事先Windows 8的下

谢谢支持。


更新:我错了,Windows 8的延迟不完全2慢倍,睡眠()分辨率似乎已经发生了巨大变化和(至少在我的测试)是非常多变的,所以每次我检测到一个偏移量时,我最终都会使用实时调整,这一点CPU密集型,但现在正在工作。

+0

d您可以验证“睡眠(1000)”实际上需要2,000毫秒吗?或者你的程序做了一些较小的睡眠?例如,“睡眠(7)”可能需要15毫秒,因为“睡眠”的分辨率可能不是毫秒级。 – 2013-04-23 20:04:41

+0

@JimMischel Small根据需要在这里和那里睡觉,这似乎是问题所在,我正考虑让所有的延迟都在一个单一的延迟上,首先查看GUI是否因为实时更新而不同步。测试后会更新。 – nxgtrturbo 2013-04-23 22:22:55

回答

0

您是否尝试使用TimeSpan(例如TimeSpan.FromSeconds(time_delta))而不是Int32?

+0

为什么这会有所作为? – 2013-04-23 20:06:07

+0

@Boluc无差异,现在收窄至Sleep()分辨率 – nxgtrturbo 2013-04-23 22:20:10

相关问题