Что я могу сделать, чтобы заставить LiveCharts обновить диаграмму, чтобы создать диаграмму в реальном времени, которая показывает постоянные изменения

#c# #winforms #charts #livecharts

Вопрос:

В настоящее время я использую WinForms. У меня есть два списка значений (двойников), которые я визуализирую с помощью пакета NuGet «LiveCharts». Теперь к моей проблеме: список значений постоянно меняется по мере добавления новых значений в оба списка с частотой до 200 значений в секунду. Прямо сейчас я делаю это со Случайными значениями. В цикле я добавляю новое случайное значение в каждый список и удаляю значение с индексом 0. Теперь я хочу, чтобы диаграмма обновлялась каждый раз, когда в список добавляется новое значение, но, хотя я вызываю метод, который должен делать это каждый раз, когда я изменяю значения, диаграмма обновляется только после завершения цикла.

Этот метод вызывается кнопкой и должен добавить 10 новых значений. Это работает, но диаграмма обновляется только после завершения цикла for, хотя метод UpdateChart() вызывается каждый раз.

  private void ReloadButton_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 10; i  )
            {
                
                valueList1.RemoveAt(0);
                AddRandomValueToList1();
                valueList2.RemoveAt(0);
                AddRandomValueToList2();
                UpdateChart();
             }
            
        } 
 

Это метод UpdateChart (), который я использую для обновления диаграммы, которая является объектом класса и содержит значение и дату-время

 private void UpdateChart()
        {

            series1 = new SeriesCollection();

           // series.Clear();

            double[] values1 = new double[valueList1.Count];
            double[] values2 = new double[valueList2.Count];

            int index = 0;

            foreach(Revenue current in valueList1)
            {
                values1[index] = current.value;
                index  ;
            }

            index = 0;

            foreach (Revenue current in valueList2)
            {
                values2[index] = current.value;
                index  ;
            }

            series1.Add(new LineSeries()
            {
                Title = "Values1",
                Values = new ChartValues<double>(values1)
            });
            series1.Add(new LineSeries()
            {
                Title = "Values2",
                Values = new ChartValues<double>(values2)
            });

            cartesianChart1.Series = series1;
 
        }
 

Я уже пытался добавить разрывы (Поток.Спать) надеялся, что график обновится, но это не сработало. А также метод cartesianChart1.Refresh (), который я вызвал в цикле for. Также я отключил анимацию, но все равно получил не тот результат, на который надеялся.

Теперь я не знаю, что я могу сделать, чтобы заставить диаграмму обновляться каждый раз, когда я изменяю значения списков, чтобы создать диаграмму в реальном времени.

I am grateful for every help

Thanks in advance