【发布时间】:2022-10-24 23:07:48
【问题描述】:
ScottPlot 用于显示具有 10'000 多个数据点的实时图表。
数据点每秒钟添加一次,因此需要更新图表。
计时器每秒执行一次刷新,但是,它会将整个 UI 冻结几毫秒,这很烦人。
ScottPlot 确实有一个非阻塞的Chart.RenderRequest(); 方法,但图表仍呈现在 UI 线程上,因此无法解决问题。
当然,如果我们尝试从后台工作人员刷新它,就会发生线程异常。
var bg = new BackgroundWorker();
bg.DoWork += (s, e) =>
{
Chart.RenderRequest();
};
bg.RunWorkerAsync();
有什么方法可以使用 WPF 和 ScottPlot 在单独的线程中呈现图表?
编辑:
是否进行了时序分析,Refresh、Render、RefreshRequest、RenderRequest 都具有相似的执行时间,尽管“请求”被认为是非阻塞的。
【问题讨论】:
-
没有。不能在另一个线程上呈现控件。如果可以通过简单地添加新图来实时更新整个图表,那么刷新整个图表似乎是个坏主意。
-
这就是它在文档中的完成方式