问题描述
我有一个控制机械臂的 WPF 应用程序。它也是一个人在回路系统。所以我希望它尽可能接近实时。我正在使用 dispatcherTimer 定期生成“滴答声”以更新机器人手臂。有点像穷人游戏循环:
public partial class MainWindow : Window
{
dispatcherTimer Timer;
public MainWindow()
{
InitializeComponent();
Timer = new dispatcherTimer(dispatcherPriority.Send);
Timer.Interval = TimeSpan.FromMilliseconds(10);
Timer.Tick += new EventHandler(OnTick);
}
private void OnTick(object sender,EventArgs e)
{
//1.Read input devices
//2.Do calculations
//3.Move robot arm
}
}
为了尽可能接近实时,必须尽快生成此滴答声,但由于 Windows 中的限制,该行...
Timer.Interval = TimeSpan.FromMilliseconds(10);
...对~15 以下的值没有实际影响。 Windows 以 15.6 毫秒的时间间隔安排线程的“睡眠”和“唤醒”这一事实受到限制,正如 Bruce Dawson 在这里很好地解释的那样。
但是,正如本文中所解释的,可以通过在 timeapi.h 中调用 timeBeginPeriod 来更改此默认调度间隔
有人可以向我展示或指出如何从 WPF 应用程序调用 WinAPI 函数(例如 timeBeginPeriod(10);
)的示例吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)