Метод AutomationElement.TryGetCurrentPattern работает только в том случае, если я приостановил поток примерно на 300 мс до - PullRequest
0 голосов
/ 21 апреля 2020

Эта функция:

public static string GetText(this AutomationElement element)
    {
        Thread.Sleep(300);
        if (element.TryGetCurrentPattern(ValuePattern.Pattern, out object patternObj))
        {
            var valuePattern = (ValuePattern)patternObj;
            return valuePattern.Current.Value;
        }
        else if (element.TryGetCurrentPattern(TextPattern.Pattern, out patternObj))
        {
            var textPattern = (TextPattern)patternObj;
            return textPattern.DocumentRange.GetText(-1).TrimEnd('\r'); // often there is an extra '\r' hanging off the end.
        }
        else
        {
            return element.Current.Name;
        }
    }

работает просто отлично. первое / второе условия всегда заданы. Но по какой-то причине, когда я удаляю Thread.Sleep(300);, оба TryGetCurrentPattern не работают для одного и того же элемента.

Что может вызвать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...