我有一个从传感器接收数据的线程,我提出了 收到每个数据项后的事件。这个速度可以非常快。 我也使用WPF来显示数据。
一方面,UI线程的数据来得太快了 尝试以该速率更新UI是愚蠢的。
另一方面,我正在研究一个需要所有数据的课程 做它的工作。让我们称之为运动处理器(MP)。
目前MP已经从主UI线程实例化,所以我将不得不移动 它进入自己的线程。而且我不确定如何附加听众 从一个线程到另一个线程。这是第一个问题。
理想情况下,我希望MP线程接收来自传感器的所有更新 线程和MP线程会将事件触发到UI线程。或MP线程 将具有绑定到UI元素的属性并在a处更新属性 慢得多,定时速度快。
我可以手动轮询时间并以这种方式更新属性......但我之前使用过线程计时器,它似乎更清洁。但是那时又会在混合中投入一个线程,并且可能会使它变得更加复杂。
我知道传感器线程实际上正在执行处理程序,我想 减少它正在做的工作,以便它不太可能错过数据 来自传感器。
所以我想这是一个关于其他人如何处理这个问题的设计问题 以下要点:
感谢您的任何意见。
答案 0 :(得分:1)
总而言之,您希望在后台运行一个监控任务,将所有数据提供给您的“MP”类并定期更新您的UI?
我要提出的第一点是关于你的陈述: “目前MP是在主UI线程中实例化的,因此我必须将其移动到自己的线程中。而且我不确定如何将侦听器从一个线程附加到另一个线程。这是第一个问题。”
您从UI线程实例化MP类的事实与它将运行的线程无关。 MP类中的每个方法和属性都可以设置为在独立线程上运行,无论实例化它的类运行在哪个线程上。
您需要解决的问题是传感器,MP和UI之间的合理关系。
根据您为UI填充数据的方式,执行此操作的实际方法会有很大差异(我们是从代码隐藏,依赖项属性还是视图模型更新UI?),但基本流程应该类似于这样:
如上所述,实际的“UI需要更新”方法将根据您的用户界面与数据的绑定方式而有所不同。
希望有所帮助。