我有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()),但这没有明显的效果。
我有哪些方法可以改善表现?