0

背景:現実的な動作を追加する試みとして、ビークル ダイナミクスの開発があります。計算結果は、実生活と 1:1 のスケールでリアルタイムに実行されます。つまり、実生活で 1 秒 = 計算結果で 1 秒です。

問題: Windows XP/Vista/7 および MacOS では、すべてが期待どおりに動作しますが、Windows 8 では、アプリケーションの実行が (どうやら) 正確に 2 倍遅くなります。

詳細: 遅延は

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

time_delta であり、1:1 の時間比率に一致するように必要に応じて計算されます。

Windows 8 では、実際には 1 秒かかるのに 2 秒かかっていますが、time_delta/2.0f を使用することはできますが、汚いトリックのように思えます。

質問:それを修正する適切な方法はありますか?

参照: 検索したところ、報告されているように見える問題が見つかりました: Metro スタイル アプリケーションに .NET 機能がありませんか?

このリンクはhttp://msdn.microsoft.com/en-us/library/d00bd51t.aspxに、Windows 8 で Thread.Sleep がサポートされていることを示しています。

前もって感謝します。


更新:私は間違っていました。Windows 8 の遅延は正確に 2 倍遅くはありません。Sleep() の解像度は劇的に変化したようで、(少なくとも私のテストでは) 非常に可変であるため、それぞれをリアルタイムで調整することになりました。少しCPUを集中的に使用するオフセットを検出しましたが、現在は機能しています。

4

1 に答える 1

0

Int32 の代わりに TimeSpan (例: TimeSpan.FromSeconds(time_delta)) を使用しようとしましたか?

于 2013-04-23T19:32:00.363 に答える