我目前正在为UWP(windows IoT核心)编写一个kiosk风格的应用程序,以用于嵌入式设备(例如pi3等)。页面的多个UI线程(加速缓慢的个别控件)
该设备有几个传感器,这些传感器在应用程序的单个屏幕上实时输出到各种图形/图表中,但我遇到了性能问题。传感器正在单独的线程中读取(使用Task.Run()=> {}),但经过分析,这似乎并不花费太多的CPU时间。 似乎更新图形花费了太多时间,并且这不是分布在内核上,因为只有一个UI线程。 CPU使用率不会超过25%,UI响应速度会变慢。
我尝试了几次优化(例如减少数据点的数量等),这有所帮助,但这还不够。也许有更快的图表组件(目前使用Telerik uwp组件),但我正在寻找另一种方法。
所以我的问题总结:有没有什么办法让图表分别在不同的UI线程中呈现(并因此分布在其他内核中)?
[稍后更新] 看起来像新的胜利物联网发布有点快,以及更新的图表组件。
这很难,没有看到你的应用程序是如何写的说,但一个可能性是,该UI是所有这些其他后台线程经常更新?那么排队更新的可能性以及是否按照计划的基础更新UI,比如每个.1或.5秒?如果你的UI线程有很多事情发生,你可能会遭受太多的上下文切换。 – cost
我试着从不同的线程本身进行更新并使用您的方法。到目前为止,在使用Dispatcher.Runasync优先级设置方面似乎没有多大区别。而且我还必须添加更多图表。 – user2921878
您的图表是否每次都完全重新绘制,或者只是其中的一小部分? – cost