Память превышает, при использовании нескольких сроков (40 линий) графика в WPF. Во всяком случае, чтобы уменьшить его?
Я пытаюсь смоделировать многострочный график с помощью библиотеки chartingToolkit в Wpf. График/диаграмма должна работать по крайней мере в течение 8-10 часов. Существует проблема линейного увеличения памяти процесса (до 800 МБ и более). Мне нужно построить график данных в реальном времени с последовательного Com-порта (разные ведомые устройства). Я вызываю 2 процесса UpadateValue и UpdateChart из DispatcherTimer.
Во время работы этой программы память процесса линейно увеличивается со временем (более 900 МБ наблюдается из Диспетчера задач..!!).
Пожалуйста, предложите мне некоторые вещи, чтобы решить проблему с памятью.
Большое спасибо
Что я уже пробовал:
публичный частичный класс MainWindow : Window
{
Коллекция ObservableCollection&ЛТ;KeyValuePair&ЛТ;инт инт&ГТ;&ГТ; Collection0 = новая коллекция ObservableCollection&ЛТ;KeyValuePair&ЛТ;инт инт&ГТ;&ГТ;();
Коллекция ObservableCollection&ЛТ;KeyValuePair&ЛТ;инт инт&ГТ;&ГТ; коллекции collection1 = новая коллекция ObservableCollection&ЛТ;KeyValuePair&ЛТ;инт инт&ГТ;&ГТ;();
/*..........продолжить.............*/
Коллекция ObservableCollection&ЛТ;KeyValuePair&ЛТ;инт инт&ГТ;&ГТ; Collection39 = новая коллекция ObservableCollection&ЛТ;KeyValuePair&ЛТ;инт инт&ГТ;&ГТ;();
Random rnd = новый случайный();
public int i = 0;
публичное главное окно()
{
метод InitializeComponent();
Параллель.Invoke(() => { SetTimer1(); });
Параллель.Invoke(() => { SetTimer2(); });
}
частный недействительными SetTimer1()
{
DispatcherTimer dispatcherTimer = новый DispatcherTimer();
диспетчер таймер.Tick += new EventHandler(ValueUpdate);
диспетчер таймер.Интервал = новый временной интервал(0, 0, 0, 2, 0);
диспетчер таймер.Начать();
}
частный недействительными SetTimer2()
{
DispatcherTimer dispatcherTimer = новый DispatcherTimer();
диспетчер таймер.ТИК += новый EventHandler(ChartUpdate);
диспетчер таймер.Интервал = новый временной интервал(0, 0, 0, 2, 0);
диспетчер таймер.Начать();
}
частная ValueUpdate недействительным(объект отправителя, EventArgs в электронной)
{
инт м = -40;
СБОРЩИК МУСОРА.Собирать();
Collection0.Добавить(новый KeyValuePair&ЛТ;инт инт&ГТ;(я, рнд.Рядом(м++, м++)));
Коллекции collection1.Добавить(новый KeyValuePair&ЛТ;инт инт&ГТ;(я, рнд.Рядом(м++, м++)));
/*......продолжить......*/
Collection39.Добавить(новый KeyValuePair&ЛТ;инт инт&ГТ;(я, рнд.Рядом(м++, м++)));
i = i + 1;
СБОРЩИК МУСОРА.Собирать();
}
ChartUpdate недействительным(объект отправителя, EventArgs в электронной)
{
СБОРЩИК МУСОРА.Собирать();
LineChart0.DataContext = Collection0;
LineChart1.Класс DataContext = Коллекции Collection1;
/*.....продолжить.....*/
LineChart39.Класс DataContext = Collection39;
СБОРЩИК МУСОРА.Собирать();
}
}