如何使用MSChart优化Invalidate()调用?

时间:2011-07-18 11:47:35

标签: c# .net optimization mschart

我有3个不同的图形显示,它们使用MSChart库进行C#。我正在用实时可用的数据更新图表。更新显示器的功能大约每40ms运行一次,如下所示:

private void UpdateDisplay()
{
    // Process data for graph 1
    // (Graph 1 has 2 Line graphs, and 1 Candlestick)

    // Get the series
    Charting.Series lineGraph1 = graph1.Series[0];

    // ....process some data and generate new data....

    // Update the data
    for (int i = 0; i < displayedSamples; i++)
    {
        lineGraph1.Points[i].YValues[0] = newData[i];
        // ....update other series' data....
    }       

    // Redraw the graph
    graph_1.Invalidate();
    graph_1.Update();

    // Process data for graph 2
    // (Graph 2 has 1 bar graph)
    // ...
    graph_2.Invalidate();
    graph_2.Update();

    // Process data for graph 3 and update points
    // (Graph 3 has 2 column graphs)
    // ...
    graph_3.Invalidate();
    graph_3.Update();
}

运行应用程序会导致应用程序的CPU使用率急剧上升。如果我只删除“Invalidate()”调用,那么应用程序的CPU使用率接近0%。

系列中的点集保持一致。生成系列时会添加所有点,然后只更新点的值。

我试图仅通过使显示的系列中的点无效来提高性能(例如graph_3.Series [0] .Points.Invalidate()),但这没有明显的效果。

我有哪些方法可以改善表现?

0 个答案:

没有答案