提高UI性能以显示动态实时数据

时间:2017-08-17 18:28:53

标签: c# winforms performance

我目前正致力于深层强化学习实施。为了了解培训的进展情况,我创建了如下所示的UI。每次在while循环结束时都会更新文本框和两个图表。这个循环在一个线程内运行,该线程模拟老虎机并训练神经网络。性能分析器指示主线程(运行UI)消耗了87%的CPU使用量,其余部分留给了模拟线程。

有没有人知道一种很好的方法可以大幅降低用户界面的成本?

    private delegate void AppendChartCallback(Chart chart, double x, double y);
    private void AppendChart(Chart chart, double x, double y)
    {
        if (chart.InvokeRequired)
        {
            AppendChartCallback d = new AppendChartCallback(AppendChart);
            Invoke(d, new object[] { chart, x, y });
        }
        else
        {
            chart.Series[0].Points.AddXY(x, y);

            if (chart.Series[0].Points.Count % 20 == 0)
            {
                chart.Refresh();
            }
        }
    }

编辑:我暂停了图表'一旦添加了更多数据(基于模数),立即更新并单独调用。

enter image description here

2 个答案:

答案 0 :(得分:0)

我不会绘制单个(x,y)点,可以绑定到一个值数组。这里有一个例子How To Create A Line Chart From Array Of Values?

答案 1 :(得分:0)

将积分添加到列表中。

让计时器每隔16.66毫秒使视图无效。