В моей программе я использую элемент управления WebBrowser для OAuth. Он расположен на vk_auth_window
форме. Поэтому в коде я звоню vk_auth_window.WebBrowser1.Navigate(vkauthurl)
. Если аутентификация прошла успешно, я молча получаю токен, но если пользователь не аутентифицирован, то для отображения имени пользователя и пароля отображается форма vk_auth_window
. Чтобы проверить это, я перехватываю событие _DocumentComplete и проверяю правильный URL. Мне не нужно, чтобы какой-либо другой код выполнялся до тех пор, пока пользователь не завершил проверку подлинности или закрытую форму аутентификации. ShowDialog() делает трюк, но он каким-то образом скрывает курсор от полей имени пользователя и пароля в элементе управления WebBrowser. Итак, я ввел переменную Dim showform as Boolean=True
и установил ее в False из события _DocumenComplete, а в основном коде я использую бесконечный цикл.Как подождать, когда форма будет закрыта без ShowDialog()?
While showform
System.Threading.Thread.Sleep(100)
Application.DoEvents()
End While
Однако он заставляет пользователя медленно работать из-за нитей. И если я удалю их, он загрузит CPU довольно много. Есть ли лучший способ подождать, когда форма закрывается? Что это?
Нет, там нет (пока VB11). Используйте обработчики событий. – SLaks
Считаете ли вы использование таймера? –