none
UI Automation - Memory Leak

    Question

  • I have encountered (what seems to be) memory leaks with the UI Automation Library. To track down the issue, I've stripped down my project to the bare minimum, and I am still able to reproduce the problem.

    Originally, there were registered handlers for Structure, Property, Automation and Focus Change Events. But to be sure, I currently am monitoring only FocusChanged Events. Usage started at 41MB working set, 9MB private; and strictly climbs up from there. Adding Automation events only increases the rate at which it grows.

    using System;
    using System.Windows.Forms;
    using System.Windows.Automation;
    
    namespace focus_monitor_test
    {
        static class Program
        {
            static void Main()
            {
                UIAListener listener = new UIAListener();
                System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
                listener.Close();
            }
        }
    
        public class UIAListener
        {
            public UIAListener()
            {
                Automation.AddAutomationFocusChangedEventHandler(new AutomationFocusChangedEventHandler(OnUIAutomationFocusEvent));
            }
    
    
            public void Close()
            {
                Automation.RemoveAllEventHandlers();
            }
    
            public void OnUIAutomationFocusEvent(object src, AutomationFocusChangedEventArgs e)
            { }
    
        }
    
    }
    

    I know the problem is not in my code; I ignore all of the events anyway. I have read that events can be stored for 3 minutes until a timer expires. I manually collected garbage, but that does not make a difference.  Thoughts??

    Wednesday, October 02, 2013 9:16 PM