C#/XAML - DispatcherTimer 分辨率
C#/XAML - DispatcherTimer resolution
我正在用 C#/XAML 编写 Windows 10 通用应用程序。
我使用 DispatcherTimer
class,我想知道它的分辨率是多少。我正在桌面环境中进行测试 - 当我将 Interval 属性 设置为小于 33 毫秒的值时,它似乎不会影响计时器 - tick 事件仍然像 Interval 设置为 33 毫秒一样频繁触发(大约每秒 33 次)。
这种行为是设计使然(您每秒触发 DispatcherTimer
的频率不能超过 33 次)还是取决于 App 的工作环境 - 例如 device/processor/memory 等 - 以及我的环境根本不支持更高的计时器分辨率?
虽然我到处都找不到官方文档,但你所观察到的似乎是有道理的。每秒 33 次是 Windows Phone 8.1 默认的 30 fps 左右。
很高兴知道您为什么需要这么高的分辨率?还要检查:WPF Timer problem… Cannot get correct millisecond tick
DispatcherTimer 只是在 UI 线程上对回调进行排队。即使在引擎盖下使用高分辨率计时器,由于随机 UI activity.
,它也会不可避免地出现抖动
如果预期用途是连续绘制,则应使用 SwapChainPanel - https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.swapchainpanel.aspx
我正在用 C#/XAML 编写 Windows 10 通用应用程序。
我使用 DispatcherTimer
class,我想知道它的分辨率是多少。我正在桌面环境中进行测试 - 当我将 Interval 属性 设置为小于 33 毫秒的值时,它似乎不会影响计时器 - tick 事件仍然像 Interval 设置为 33 毫秒一样频繁触发(大约每秒 33 次)。
这种行为是设计使然(您每秒触发 DispatcherTimer
的频率不能超过 33 次)还是取决于 App 的工作环境 - 例如 device/processor/memory 等 - 以及我的环境根本不支持更高的计时器分辨率?
虽然我到处都找不到官方文档,但你所观察到的似乎是有道理的。每秒 33 次是 Windows Phone 8.1 默认的 30 fps 左右。 很高兴知道您为什么需要这么高的分辨率?还要检查:WPF Timer problem… Cannot get correct millisecond tick
DispatcherTimer 只是在 UI 线程上对回调进行排队。即使在引擎盖下使用高分辨率计时器,由于随机 UI activity.
,它也会不可避免地出现抖动如果预期用途是连续绘制,则应使用 SwapChainPanel - https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.swapchainpanel.aspx