Windows runtime C#/XAML-调度程序解析

Windows runtime C#/XAML-调度程序解析,windows-runtime,windows-store-apps,win-universal-app,Windows Runtime,Windows Store Apps,Win Universal App,我正在用C#/XAML编写一个windows10通用应用程序 我使用了dispatchermer类,我想知道它的解决方案是什么。我在桌面环境中进行测试-当我将Interval属性设置为小于33毫秒时,它似乎不会影响计时器-tick事件仍会触发,就像Interval设置为33毫秒一样频繁(大约每秒33次) 这种行为是设计出来的(你不能每秒触发33次以上的调度程序),还是取决于应用程序的工作环境(如设备/处理器/内存等),而我的环境根本不支持更高的计时器分辨率?尽管我在任何地方都找不到官方文档,你所

我正在用C#/XAML编写一个windows10通用应用程序

我使用了
dispatchermer
类,我想知道它的解决方案是什么。我在桌面环境中进行测试-当我将Interval属性设置为小于33毫秒时,它似乎不会影响计时器-tick事件仍会触发,就像Interval设置为33毫秒一样频繁(大约每秒33次)


这种行为是设计出来的(你不能每秒触发33次以上的调度程序),还是取决于应用程序的工作环境(如设备/处理器/内存等),而我的环境根本不支持更高的计时器分辨率?

尽管我在任何地方都找不到官方文档,你所观察到的似乎是有道理的。Windows Phone 8.1的默认值为每秒33次,约为30 fps。
如果您能知道为什么需要如此高的分辨率,那就太好了?还要检查:

Dispatchermer只是在UI线程上对回调进行排队。即使它在引擎盖下使用高分辨率计时器,由于随机UI活动,它也会不可避免地出现抖动


如果打算用于连续绘图,则应使用SwapChainPanel-

如果Windows Phone 8.1默认为30 fps,则分辨率高于33 ms左右确实毫无意义。然而,我的应用程序有一个非常不寻常的场景。我使用Dispatcher Timer探测指针位置并检测位置变化(目前我在桌面环境中工作,所以实际上现在我的指针是鼠标光标),我不能在Dispatcher以外的其他线程上调用Window.Current.CoreWindow.PointerPosition,我不确定UIElement.PointerMoved事件是否是确定性的,所以我决定以固定的时间间隔探测游标。但是,如果Dispatcher的分辨率与设备的FPS相关,那么Windows.UI.Core.CoreDispatcher.RunAsync()也应该能够每秒触发作为参数传递的操作大约30次。但它不是那样的,这对我来说很难。