C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 175 を表示中)
■100409 / )  Re[1]: 非同期処理を同期処理にする方法
□投稿者/ 魔界の仮面弁士 (3442回)-(2022/07/28(Thu) 10:14:56)
No100404 (furu さん) に返信
> Application.DoEventsを使う方法はわかっています。
メッセージループは Application.Run や Application.DoEvents の他、
モーダルダイアログによっても回りますね。使いやすいかというと微妙ですが…。

using(var dlg = new Form()) // [処理中]画面をモーダル表示することで待機させる
{
  dlg.Opacity = 0; // [処理中]画面を隠す
  var navigationCompleted = default(EventHandler<Microsoft.Web.WebView2.Core.CoreWebView2NavigationCompletedEventArgs>);
  navigationCompleted = (sender, e) =>
  {
    webView21.NavigationCompleted -= navigationCompleted;
    dlg.Close(); // 処理が完了したのでモーダル画面を閉じる
  };
  webView21.NavigationCompleted += navigationCompleted;
  dlg.Shown += delegate { webView21.Source = new Uri(url); };
  dlg.ShowDialog(this); // 内部で Application.RunDialog が呼ばれて待機される
}
return;
解決済み
返信 編集キー/


管理者用

- Child Tree -