Speedup MSChart Clear Data Points
Problem Statement
Clearing data points in MSChart is known to be very slow.http://connect.microsoft.com/VisualStudio/feedback/details/596212/performance-problem-in-mschart-datapointcollection-clear
Solution
However, there is a work around for this problem.Suggested work around from link stated above is as below:
public void ClearPointsQuick() { Points.SuspendUpdates(); while (Points.Count > 0) Points.RemoveAt(Points.Count - 1); Points.ResumeUpdates(); Points.Clear(); //NOTE 1 }
Extension method implementation is as below:internal static class MSChartExtension { public static void ClearPoints(this Series sender) { sender.Points.SuspendUpdates(); while (sender.Points.Count > 0) sender.Points.RemoveAt(sender.Points.Count - 1); sender.Points.ResumeUpdates(); sender.Points.Clear(); //NOTE 1 } }
(NOTE 1) I added one additional line Points.Clear() at the end of the function to ensure the chart axis updated correctly on next plot. Without adding this line, I observed that previous axis settings will be used when plotting new data points right after calling ClearPoints().
See Also
MSChart Extension: An extension package for MSChart component which contains this fixes and others features.Revision History
31/03/2012: Added additional line to force axis update on next plot (NOTE 1).12/03/2012: Initial released.