CountdownEventでブラウザコントロールの読み込み完了を待つ | 主にDIYのブログ

主にDIYのブログ

ブログの説明を入力しません。

CountdownEventクラスの少し変な使い方が広まってるっぽいので私の使い方を書いておく。

 

public class HogeForm : Form    //WebView2 wv2を持つフォーム

{

    private readonly CountdownEvent countdownevent = new CountdownEvent(1);

 

    //Dispose省略 忘れずに

 

    private void wv2_NavigationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2NavigationCompletedEventArgs e)

    {

        if (!countdownevent.IsSet) { countdownevent.Signal(); }

    }

 

    public async Task LoadWebpageAsync(string url)

    {

        countdownevent.Reset();

        wv2.Source = new Uri(url);

        bool flg = await Task.Run(() => countdownevent.Wait(10000));

        if (!flg) { throw new ApplicationException("読み込み失敗"); }

        //読み込み成功時の処理

    }

}