2013-04-23 38 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

相關問題