in src/Desktop/UIAutomation/EventHandlers/EventListenerFactory.cs [145:218]
private void UnregisterAllEventListener()
{
#pragma warning disable CA2000 // Call IDisposeable.Dispose()
/// Need to find out a way to handle
UnregisterEventListener(new EventListenerFactoryMessage
{
EventId = EventType.UIA_AutomationFocusChangedEventId
});
UnregisterEventListener(new EventListenerFactoryMessage
{
EventId = EventType.UIA_StructureChangedEventId
});
UnregisterEventListener(new EventListenerFactoryMessage
{
EventId = EventType.UIA_AutomationPropertyChangedEventId
});
UnregisterEventListener(new EventListenerFactoryMessage
{
EventId = EventType.UIA_NotificationEventId
});
UnregisterEventListener(new EventListenerFactoryMessage
{
EventId = EventType.UIA_TextEdit_TextChangedEventId
});
UnregisterEventListener(new EventListenerFactoryMessage
{
EventId = EventType.UIA_ActiveTextPositionChangedEventId
});
UnregisterEventListener(new EventListenerFactoryMessage
{
EventId = EventType.UIA_ChangesEventId
});
#pragma warning restore CA2000
HandleUIAutomationEventMessage listener = null;
try
{
foreach (var e in this.EventListeners.Values)
{
listener = e.ListenEventMessage;
e.Dispose();
}
this.EventListeners.Clear();
if (listener != null)
{
#pragma warning disable CA2000 // Call IDisposable.Dispose()
var m = EventMessage.GetInstance(EventType.UIA_EventRecorderNotificationEventId, null);
#pragma warning restore CA2000
m.Properties = new List<KeyValuePair<string, dynamic>> { new KeyValuePair<string, dynamic>("Message", "Succeeded to unregister all event listeners.") };
listener(m);
}
}
#pragma warning disable CA1031 // Do not catch general exception types
catch (Exception e)
{
e.ReportException();
#pragma warning disable CA2000 // Call IDisposable.Dispose()
var m = EventMessage.GetInstance(EventType.UIA_EventRecorderNotificationEventId, null);
#pragma warning restore CA2000
m.Properties = new List<KeyValuePair<string, dynamic>> { new KeyValuePair<string, dynamic>("Message", $"Failed to unregister all listeners: {e.Message}") };
listener(m);
}
#pragma warning restore CA1031 // Do not catch general exception types
}