Как удалить точки из XyDataSeries в SciChart?
У меня есть быстрое приобретение, чтобы показать на SciChart и приложение, которое должно работать в течение длительного времени без использования всей оперативной памяти ПК.
Не обязательно, чтобы я отображал все точки на графике, а только определенный интервал времени, поэтому я решил удалить точки из ряда, когда я больше не хочу их отображать.
Я попробовал метод XyDataSeries.RemoveRange, но при вызове я получил следующее исключение:
System.NotSupportedException: 'Remove is not a supported operation on a Fifo Buffer'
Что вам предлагают побороть эту проблему?
1 ответ
Единственный способ обойти это - не иметь буфера 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, добавляющей / удаляющей массово, производительность гораздо выше, чем один момент за раз.