使用多线程持续更新 UWP UI 元素Windows 10 IoT Core

问题描述

我有一个在 Windows 10 IoT Core 上运行的 UWP 应用程序,我不断地从多个传感器读取输出,并将它们显示在 TextBlock 中。

我目前正在为每个传感器使用 DispatcherTimer,但我想看看是否有办法通过使用多个线程来优化代码(每个线程将从传感器收集数据,然后 UI 线程将更新 TextBlocks )

我尝试编写以下代码,但它使事情变得更糟

这是我为其中一个传感器创建的计时器:

    private void updatePeakValue()
    {
        timerPeakValue = new System.Timers.Timer(10);
        timerPeakValue.Elapsed += PeakValue_Tick;
        timerPeakValue.Enabled = true;
        timerPeakValue.Start();
    }

这里是 Elapsed Event(我使用 rand.next 来模拟从传感器读取值):

    private async void PeakValue_Tick(object sender,object e)
    {
        Random rand = new Random();
        await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() => {
            tbPeakValue.Text = rand.Next(0,10).ToString();
        });
    }

这段代码阻塞了我的 UI,TextBlock 只会在我移动鼠标时更新

除了依赖多个 DispatcherTimer 之外,还有什么我可以尝试的吗?

先谢谢你!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)