【问题标题】:Thread.Sleep Not Working with Silverlight 5 under Windows 8Thread.Sleep 不适用于 Windows 8 下的 Silverlight 5
【发布时间】:2013-04-23 03:45:39
【问题描述】:

背景: 车辆动力学有一个发展,作为增加现实行为的尝试,计算结果是实时执行的,与现实生活中的比例为 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 但这似乎是一个肮脏的把戏。

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

参考资料: 我搜索了一下,发现好像是报的问题: Missing .NET features in Metro style application?

此链接显示http://msdn.microsoft.com/en-us/library/d00bd51t.aspx Thread.Sleep 在 Windows 8 下受支持。

提前致谢。


更新:我错了,Windows 8 的延迟并不完全慢 2 倍,Sleep() 的分辨率似乎发生了巨大变化并且(至少在我的测试下)变化很大,所以我最终每次检测到偏移时都使用实时调整,这有点 CPU 密集型但现在可以工作了。

【问题讨论】:

  • d你能验证Sleep(1000)实际上需要2000毫秒吗?还是您的程序正在做一些较小的睡眠?例如,Sleep(7) 可能需要 15 毫秒,因为Sleep 的分辨率可能不在毫秒级别。
  • @JimMischel Small 根据需要在这里和那里睡觉,这似乎是问题所在,我正在考虑将所有延迟都放在一个上,首先查看 GUI 是否不同步正在实时更新。测试后会更新。

标签: c# silverlight windows-8 thread-sleep


【解决方案1】:

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

【讨论】:

  • 那为什么会有影响?
  • @Boluc 没有区别,现在缩小到 Sleep() 分辨率
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-25
  • 1970-01-01
  • 2017-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多