From 89f8dedb57c6dfea2180b882cf2881a76fe268cf Mon Sep 17 00:00:00 2001
From: Lightczx <1686188646@qq.com>
Date: Thu, 6 Jun 2024 13:11:24 +0800
Subject: [PATCH] fix url protocol launch lock
---
.../Core/LifeCycle/AppActivation.cs | 49 ++++++++++++-------
1 file changed, 30 insertions(+), 19 deletions(-)
diff --git a/src/Snap.Hutao/Snap.Hutao/Core/LifeCycle/AppActivation.cs b/src/Snap.Hutao/Snap.Hutao/Core/LifeCycle/AppActivation.cs
index 588c061b..e0ede679 100644
--- a/src/Snap.Hutao/Snap.Hutao/Core/LifeCycle/AppActivation.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Core/LifeCycle/AppActivation.cs
@@ -56,30 +56,39 @@ internal sealed partial class AppActivation : IAppActivation, IAppActivationActi
///
public void PostInitialization()
{
- serviceProvider.GetRequiredService().RunAsync().SafeForget();
- ToastNotificationManagerCompat.OnActivated += NotificationActivate;
+ RunPostInitializationAsync().SafeForget();
- using (activateSemaphore.Enter())
+ async ValueTask RunPostInitializationAsync()
{
- // TODO: Introduced in 1.10.2, remove in later version
- serviceProvider.GetRequiredService().ClearAsync().SafeForget();
- serviceProvider.GetRequiredService().UnregisterAllTasks();
+ await taskContext.SwitchToBackgroundAsync();
- if (UnsafeLocalSetting.Get(SettingKeys.Major1Minor10Revision0GuideState, GuideState.Language) < GuideState.Completed)
+ serviceProvider.GetRequiredService().RunAsync().SafeForget();
+ ToastNotificationManagerCompat.OnActivated += NotificationActivate;
+
+ using (await activateSemaphore.EnterAsync().ConfigureAwait(false))
{
- return;
+ // TODO: Introduced in 1.10.2, remove in later version
+ serviceProvider.GetRequiredService().ClearAsync().SafeForget();
+ serviceProvider.GetRequiredService().UnregisterAllTasks();
+
+ if (UnsafeLocalSetting.Get(SettingKeys.Major1Minor10Revision0GuideState, GuideState.Language) < GuideState.Completed)
+ {
+ return;
+ }
+
+ serviceProvider.GetRequiredService().RegisterAll();
+
+ if (serviceProvider.GetRequiredService().IsNotifyIconEnabled)
+ {
+ XamlLifetime.ApplicationLaunchedWithNotifyIcon = true;
+
+ await taskContext.SwitchToMainThreadAsync();
+ serviceProvider.GetRequiredService().DispatcherShutdownMode = DispatcherShutdownMode.OnExplicitShutdown;
+ _ = serviceProvider.GetRequiredService();
+ }
+
+ serviceProvider.GetRequiredService().StartAsync(default).SafeForget();
}
-
- serviceProvider.GetRequiredService().RegisterAll();
-
- if (serviceProvider.GetRequiredService().IsNotifyIconEnabled)
- {
- XamlLifetime.ApplicationLaunchedWithNotifyIcon = true;
- serviceProvider.GetRequiredService().DispatcherShutdownMode = DispatcherShutdownMode.OnExplicitShutdown;
- _ = serviceProvider.GetRequiredService();
- }
-
- serviceProvider.GetRequiredService().StartAsync(default).SafeForget();
}
}
@@ -140,6 +149,8 @@ internal sealed partial class AppActivation : IAppActivation, IAppActivationActi
private async ValueTask HandleActivationAsync(HutaoActivationArguments args)
{
+ await taskContext.SwitchToBackgroundAsync();
+
if (activateSemaphore.CurrentCount > 0)
{
using (await activateSemaphore.EnterAsync().ConfigureAwait(false))