在多线程/异步环境中使用ScottPlot

一些应用程序是多线程的(例如WPF),允许渲染与数据操作例程分开进行。虽然这允许更快、响应更快的应用程序,但如果在渲染过程中对绘图仪对象内的数据进行操作,则会引发潜在的问题。例如,替换xsys散点图中的数组虽然这可能会导致异常。

这个Plot模块有一个渲染锁定系统,允许在多线程环境中操作数据。使命感Plot.RenderLock()将一直挂起,直到当前渲染完成,这将阻止未来的渲染发生。这允许用户根据自己的意愿修改绘图。稍后用户可以调用Plot.RenderUnlock()允许继续。

// hang until the current render is complete and prevent future renders
wpfPlot1.Plot.RenderLock();

/* plottables and data may be freely manipulated now */

// resume automatic rendering
wpfPlot1.Plot.RenderUnlock();