private void OntimerSelectorElapsedEvent()

in src/AccessibilityInsights/MainWindowHelpers/Timers.cs [45:91]


        private void OntimerSelectorElapsedEvent(object sender, ElapsedEventArgs e)
        {
            if (this.timerSelector != null)
            {
                if (AllowFurtherAction)
                {
                    Dispatcher.Invoke(delegate ()
                    {
                        lock (_lockObject)
                        {
                            if (this.CurrentPage != AppPage.Exit && AllowFurtherAction)
                            {
                                var sa = SelectAction.GetDefaultInstance();
                                var cecId = sa.SelectedElementContextId;
                                var cec = cecId.HasValue ? GetDataAction.GetElementContext(cecId.Value) : null;
                                if (sa.Select())
                                {
                                    var ec = GetDataAction.GetElementContext(sa.SelectedElementContextId.Value);

                                    if ((cec == null || cec.Element.IsSameUIElement(ec.Element) == false) && ec.Element.IsRootElement() == false)
                                    {
                                        HandleTargetSelectionChanged();
                                    }
                                    if (!sa.IsPaused)
                                    {
                                        cec?.Dispose();
                                        cec = null;
                                    }
                                }
                            }
                        }
                    });
                }

                lock (_lockObject)
                {
                    EnableTimerSafely(timerSelector, true); // make sure that it is disabled.
                }
            }
            else
            {
                lock (_lockObject)
                {
                    EnableTimerSafely(timerSelector, false); // make sure that it is disabled.
                }
            }
        }