ブラウザコントロールがあるウィンドウがあります。誰かがウィンドウを閉じると、ブラウザコントロールを特定のURLに移動する必要があり、ブラウザの操作が終了した後でウィンドウを閉じる必要があります。UIスレッドで実行されているメソッドの実行を一時停止
ウィンドウが閉じられると、OnBeforeWindowClose(Eventargs e)
メソッドが呼び出されます。それはUIスレッドがスリープ状態になりますので、
OnBeforeWindowClose(Eventargs e)
{
// As soon as the URL property is set the browser control navigates to the URL
URL = "new URL";
//I need to wait till the browser is done navigating. Based on the NavigationFinished property below
}
bool NavigationFinished {set; get;}
私はThread.Sleep
を使用することはできません。 NavigationFinisedがtrueになるまで、OnBeforeCloseの実行を一時停止する方法はわかりません。 UIスレッドをブロックすることなく
UPDATE:OnBeforeWindowCloseメソッドに次のループを追加するには、私のため
do
{
var dateTime = DateTime.Now.AddSeconds(2);
while (DateTime.Now < dateTime)
{
System.Windows.Forms.Application.DoEvents();
}
} while (!NavigationFinished);
を働いしかし、その代わりに.NET 4.0
あなたは 'await'を探しています。 – SLaks
それは.net 4.0で利用できません:( – Kaddy
NuGetに 'Microsoft.Bcl.Async'をインストールしてください。 – SLaks