1

我有一个快速采集显示在 SciChart 和应用程序上,该应用程序应该运行很长时间而不消耗 PC 的所有 RAM。

我没有必要在图表上显示所有点,而只是显示最近的某个时间间隔,因此当我不想再显示这些点时,我想从系列中删除点。

我尝试了 XyDataSeries.RemoveRange 方法,但是当我调用它时,我得到了以下异常:

System.NotSupportedException: 'Remove is not a supported operation on a Fifo Buffer'

你有什么建议来克服这个问题?

4

1 回答 1

0

解决此问题的唯一方法是没有 FIFO 缓冲区并手动使用 DataSeries 的插入/追加和删除功能来维护一定数量的点。

例如

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文档,批量追加/删除的性能远高于一次执行一个点。

于 2018-09-11T17:57:33.087 回答