私のプログラムでは、OAuthにWebBrowserコントロールを使用しています。フォームにありvk_auth_window
ます。したがって、コードでは。を呼び出しますvk_auth_window.WebBrowser1.Navigate(vkauthurl)
。認証が成功した場合、私は黙ってトークンを取得しますが、ユーザーが認証されていない場合、ユーザーvk_auth_window
名とパスワードを入力するためのフォームが表示されます。これを確認するには、_DocumentCompleteイベントをキャッチし、正しいURLを確認します。ユーザーが認証を完了するか、認証フォームを閉じるまで、他のコードを実行する必要はありません。ShowDialog()はこのトリックを実行しますが、WebBrowserコントロールのユーザー名とパスワードのフィールドからカーソルを隠します。そこで、変数を導入Dim showform as Boolean=True
し、_DocumenCompleteイベントからFalseに設定し、メインコードでは無限ループを使用します。
While showform
System.Threading.Thread.Sleep(100)
Application.DoEvents()
End While
ただし、スレッドがスリープするため、ユーザー入力が遅くなります。そして、それらを削除すると、CPUにかなりの負荷がかかります。フォームが閉じるのを待つより良い方法はありますか?それは何ですか?