我可以快速获取要显示在SciChart和应用程序上的信息,该应用程序可以长时间运行而不会占用PC的所有RAM。
我不必在图形上显示所有点,而只是在最近的某个时间间隔内显示,因此当我不想再显示这些点时,我考虑从序列中删除点。
我尝试了XyDataSeries.RemoveRange方法,但是当我调用它时,出现了以下异常:
System.NotSupportedException: 'Remove is not a supported operation on a Fifo Buffer'
您对解决此问题有何建议?
答案 0 :(得分:0)
唯一的解决方法是没有FIFO缓冲区,并手动使用DataSeries的Insert / Append和Remove函数来维护一定数量的点。
例如
public class Foo
{
private XyDataSeries<double> _ds = new XyDataSeries<double>();
private const int FifoCapacity = 1000;
void AppendPoint(double x, double y)
{
using (_ds.SuspendUpdates())
{
_ds.Append(x,y);
if (_ds.Count > FifoCapacity)
{
_ds.RemoveAt(0);
}
}
}
}
现在,您可以在自定义系列上使用Remove,RemoveRange,RemoveAt。
请注意,根据SciChart的WPF Charts Performance Tips and Tricks文档,批量添加/删除操作一次执行的效率远远超过一次。