Как удалить точки из XyDataSeries в SciChart? - PullRequest
0 голосов
/ 28 августа 2018

У меня есть быстрое приобретение, которое можно показать на SciChart и в приложении, которое должно работать в течение длительного времени без использования всей оперативной памяти ПК.

Не обязательно отображать все точки на графике, а только определенный интервал времени, поэтому я решил удалить точки из серии, когда я больше не хочу их отображать.

Я попробовал метод XyDataSeries.RemoveRange, но когда я вызвал его, я получил следующее исключение:

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

Что вам предлагают побороть эту проблему?

1 Ответ

0 голосов
/ 11 сентября 2018

Единственный способ обойти это - не иметь буфера 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 для вашей пользовательской серии.

Обратите внимание, что в соответствии с советами и рекомендациями по производительности графиков WPF SciChart добавление / удаление документов в больших количествах намного эффективнее, чем один пункт за раз.

...