From 193753b232005a0abee6a15edd0701cbc93f8e16 Mon Sep 17 00:00:00 2001 From: ysmoradi Date: Thu, 20 Feb 2025 13:21:22 +0100 Subject: [PATCH] feat(infra):Improve mechanism to start Blazor in windows apps (#9961) --- .../Program.cs | 18 ++++++++++-------- .../Boilerplate.Client.Windows/Program.cs | 13 +++++++++---- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Windows/Program.cs b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Windows/Program.cs index e1a6303d98..01cf3696b0 100644 --- a/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Windows/Program.cs +++ b/src/BlazorUI/Demo/Client/Bit.BlazorUI.Demo.Client.Windows/Program.cs @@ -102,14 +102,8 @@ public static void Main(string[] args) settings.IsZoomControlEnabled = false; settings.AreBrowserAcceleratorKeysEnabled = false; #endif - bool hasBlazorStarted = false; - blazorWebView.WebView.NavigationCompleted += async delegate - { - if (hasBlazorStarted) - return; - hasBlazorStarted = true; - await blazorWebView.WebView.ExecuteScriptAsync("Blazor.start()"); - }; + + _ = StartBlazor(blazorWebView); }; form.Controls.Add(blazorWebView); @@ -117,6 +111,14 @@ public static void Main(string[] args) Application.Run(form); } + static async Task StartBlazor(BlazorWebView blazorWebView) + { + while (await blazorWebView.WebView.ExecuteScriptAsync("Blazor.start()") is "null") + { + await Task.Yield(); + } + } + private static void LogException(object? error) { var errorMessage = error?.ToString() ?? "Unknown error"; diff --git a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Program.cs b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Program.cs index 7c4b986449..fdd3e9b40e 100644 --- a/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Program.cs +++ b/src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Program.cs @@ -116,10 +116,7 @@ public static void Main(string[] args) settings.IsZoomControlEnabled = false; settings.AreBrowserAcceleratorKeysEnabled = false; } - blazorWebView.WebView.NavigationCompleted += async delegate - { - await blazorWebView.WebView.ExecuteScriptAsync("Blazor.start()"); - }; + _ = StartBlazor(blazorWebView); }; form.Controls.Add(blazorWebView); @@ -127,6 +124,14 @@ public static void Main(string[] args) Application.Run(form); } + static async Task StartBlazor(BlazorWebView blazorWebView) + { + while (await blazorWebView.WebView.ExecuteScriptAsync("Blazor.start()") is "null") + { + await Task.Yield(); + } + } + private static void LogException(object? error, string reportedBy) { if (Services is not null && error is Exception exp)