6
私は.net 4.0を使用しています。非同期メソッドを使用してDocumentCompletedイベントを完了して値を返す方法を理解しようとしました。私のオリジナルコードは上記ですが、このシナリオではどのように非同期/待機モデルにすることができますか?完了したイベントの非同期メソッド
private class BrowserWindow
{
private bool webBrowserReady = false;
public string content = "";
public void Navigate(string url)
{
xxx browser = new xxx();
browser.DocumentCompleted += new EventHandler(wb_DocumentCompleted);
webBrowserReady = false;
browser.CreateControl();
if (browser.IsHandleCreated)
browser.Navigate(url);
while (!webBrowserReady)
{
//Application.DoEvents(); >> replace it with async/await
}
}
private void wb_DocumentCompleted(object sender, EventArgs e)
{
try
{
...
webBrowserReady = true;
content = browser.Document.Body.InnerHtml;
}
catch
{
}
}
public delegate string AsyncMethodCaller(string url);
}
あなたの素敵なソリューションのおかげで、しかし、1つの問題は、私は「ということです私はvs 2010と.net 4.0を使用しているので、私はsynctax(4.5)を待つのではなく古いスタイルを使用する必要があります。私はそれを4.0で動作させる方法を少し混乱しています –
@namvoあなたは、あなたがasync/awaitを使って解決策を望んでいたと言いました。そうでない場合は、メソッドが返すタスク( 'WhenDocumentCompleted'イベントは4.0で動作します)で' ContinueWith'を使用し、そこに文書が完成した後に実行するコードを入れてください。あなたはたぶん便宜上ラムダを使いたいと思うでしょう。 – Servy
ありがとう、私はそれと一緒に遊ぶだろう。 –