Windows Automaton - InvokePattern блокирует выполнение, пока все не завершится
Я испытал такое поведение в своем приложении автоматизации: когда я "нажимаю" кнопку, вызывая InvokePattern.Invoke()
Метод все останавливается, пока не завершится обработчик события click внутри автоматизированного приложения.
Хотя это может сделать что-то простое (например, мне не нужно писать тонны кода, чтобы дождаться исчезновения диалога с индикатором выполнения, потому что я просто возвращаю элемент управления, когда все сделано), но я не могу сделать что-нибудь еще. Он даже блокирует доступ к API автоматизации в другом потоке, где он продолжается после того, как обработчик щелчков сделан.
Это вызывает проблемы, когда обработчик щелчков в автоматизированном приложении открывает модальное диалоговое окно, тогда я ничего не могу сделать, доступ к приложению через API автоматизации блокируется, пока диалоговое окно не будет закрыто вручную.
Кто-нибудь решил это как-то и может мне помочь?
Спасибо карел
PS: Справочный источник говорит это:
Request that the control initiate its action.
/// Should return immediately without blocking.
/// There is no way to determine what happened, when it happend, or whether
/// anything happened at all
public void Invoke() { ... }
Редактировать: он отлично работает при автоматизации приложения Windows Notepad, которое не является приложением.NET. И это не работает для клона Notepad (приложение C# WinForms).
1 ответ
ты нашел ответ? У меня аналогичная проблема. в моем случае выполнение зависает, а через некоторое время выдает ошибку.