Monday, March 12, 2012

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.

Appreciation

Do you like our work? Appreciate if you could help to buy us a cup of coffee. Thank you.