我可以从 WPF 应用程序调用 Win API 函数吗

问题描述

我有一个控制机械臂的 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 (将#修改为@)