diff --git a/src/Snap.Hutao/Snap.Hutao/App.xaml.cs b/src/Snap.Hutao/Snap.Hutao/App.xaml.cs
index b1ad7866..44188983 100644
--- a/src/Snap.Hutao/Snap.Hutao/App.xaml.cs
+++ b/src/Snap.Hutao/Snap.Hutao/App.xaml.cs
@@ -5,6 +5,7 @@ using Microsoft.UI.Xaml;
using Microsoft.Windows.AppLifecycle;
using Snap.Hutao.Core.LifeCycle;
using Snap.Hutao.Core.Logging;
+using Snap.Hutao.Core.Threading;
using Snap.Hutao.Extension;
using Snap.Hutao.Service.Metadata;
using System.Diagnostics;
diff --git a/src/Snap.Hutao/Snap.Hutao/Control/Extension/ContentDialogExtensions.cs b/src/Snap.Hutao/Snap.Hutao/Control/Extension/ContentDialogExtensions.cs
index 473310e5..5dbe10a9 100644
--- a/src/Snap.Hutao/Snap.Hutao/Control/Extension/ContentDialogExtensions.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Control/Extension/ContentDialogExtensions.cs
@@ -6,7 +6,6 @@ using Microsoft.UI.Xaml.Controls;
using Microsoft.Xaml.Interactivity;
using Snap.Hutao.Control.Behavior;
using Snap.Hutao.Core.Threading;
-using Snap.Hutao.Extension;
namespace Snap.Hutao.Control.Extension;
@@ -33,20 +32,15 @@ internal static class ContentDialogExtensions
/// 阻止用户交互
///
/// 对话框
- /// 切换到主线程
/// 用于恢复用户交互
- public static async ValueTask BlockAsync(this ContentDialog contentDialog, bool switchToMainThread = false)
+ public static async ValueTask BlockAsync(this ContentDialog contentDialog)
{
- if (switchToMainThread)
- {
- await ThreadHelper.SwitchToMainThreadAsync();
- }
-
+ await ThreadHelper.SwitchToMainThreadAsync();
contentDialog.ShowAsync().AsTask().SafeForget();
return new ContentDialogHider(contentDialog);
}
- private struct ContentDialogHider : IDisposable
+ private struct ContentDialogHider : IAsyncDisposable
{
private readonly ContentDialog contentDialog;
@@ -55,8 +49,11 @@ internal static class ContentDialogExtensions
this.contentDialog = contentDialog;
}
- public void Dispose()
+ public async ValueTask DisposeAsync()
{
+ await ThreadHelper.SwitchToMainThreadAsync();
+
+ // Hide() must be called on main thread.
contentDialog.Hide();
}
}
diff --git a/src/Snap.Hutao/Snap.Hutao/Core/Logging/LogEntryQueue.cs b/src/Snap.Hutao/Snap.Hutao/Core/Logging/LogEntryQueue.cs
index f9dfc1af..15b668ca 100644
--- a/src/Snap.Hutao/Snap.Hutao/Core/Logging/LogEntryQueue.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Core/Logging/LogEntryQueue.cs
@@ -4,7 +4,7 @@
using Microsoft.EntityFrameworkCore;
using Snap.Hutao.Context.Database;
using Snap.Hutao.Context.FileSystem;
-using Snap.Hutao.Extension;
+using Snap.Hutao.Core.Threading;
using System.Collections.Concurrent;
using System.Diagnostics;
diff --git a/src/Snap.Hutao/Snap.Hutao/Extension/TaskExtensions.cs b/src/Snap.Hutao/Snap.Hutao/Core/Threading/TaskExtensions.cs
similarity index 86%
rename from src/Snap.Hutao/Snap.Hutao/Extension/TaskExtensions.cs
rename to src/Snap.Hutao/Snap.Hutao/Core/Threading/TaskExtensions.cs
index 5660460e..55e119cb 100644
--- a/src/Snap.Hutao/Snap.Hutao/Extension/TaskExtensions.cs
+++ b/src/Snap.Hutao/Snap.Hutao/Core/Threading/TaskExtensions.cs
@@ -3,7 +3,7 @@
using Snap.Hutao.Core.Logging;
-namespace Snap.Hutao.Extension;
+namespace Snap.Hutao.Core.Threading;
///
/// 任务扩展
@@ -22,8 +22,9 @@ public static class TaskExtensions
{
await task;
}
- catch
+ catch (System.Exception ex)
{
+ System.Diagnostics.Debug.WriteLine(ex);
}
}
@@ -42,7 +43,7 @@ public static class TaskExtensions
{
// Do nothing
}
- catch (Exception e)
+ catch (System.Exception e)
{
logger?.LogError(EventIds.TaskException, e, "{caller}:\r\n{exception}", nameof(SafeForget), e.GetBaseException());
}
@@ -54,7 +55,7 @@ public static class TaskExtensions
/// 任务
/// 日志器
/// 发生异常时调用
- public static async void SafeForget(this Task task, ILogger? logger = null, Action? onException = null)
+ public static async void SafeForget(this Task task, ILogger? logger = null, Action? onException = null)
{
try
{
@@ -64,7 +65,7 @@ public static class TaskExtensions
{
// Do nothing
}
- catch (Exception e)
+ catch (System.Exception e)
{
logger?.LogError(EventIds.TaskException, e, "{caller}:\r\n{exception}", nameof(SafeForget), e.GetBaseException());
onException?.Invoke(e);
@@ -78,7 +79,7 @@ public static class TaskExtensions
/// 日志器
/// 任务取消时调用
/// 发生异常时调用
- public static async void SafeForget(this Task task, ILogger? logger = null, Action? onCanceled = null, Action? onException = null)
+ public static async void SafeForget(this Task task, ILogger? logger = null, Action? onCanceled = null, Action? onException = null)
{
try
{
@@ -88,7 +89,7 @@ public static class TaskExtensions
{
onCanceled?.Invoke();
}
- catch (Exception e)
+ catch (System.Exception e)
{
logger?.LogError(EventIds.TaskException, e, "{caller}:\r\n{exception}", nameof(SafeForget), e.GetBaseException());
onException?.Invoke(e);
diff --git a/src/Snap.Hutao/Snap.Hutao/Properties/launchSettings.json b/src/Snap.Hutao/Snap.Hutao/Properties/launchSettings.json
index dc55a580..b8b51163 100644
--- a/src/Snap.Hutao/Snap.Hutao/Properties/launchSettings.json
+++ b/src/Snap.Hutao/Snap.Hutao/Properties/launchSettings.json
@@ -2,7 +2,7 @@
"profiles": {
"Snap.Hutao (Package)": {
"commandName": "MsixPackage",
- "nativeDebugging": false
+ "nativeDebugging": true
},
"Snap.Hutao (Unpackaged)": {
"commandName": "Project"
diff --git a/src/Snap.Hutao/Snap.Hutao/View/MainView.xaml.cs b/src/Snap.Hutao/Snap.Hutao/View/MainView.xaml.cs
index d0f7f2b3..eb38f687 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/MainView.xaml.cs
+++ b/src/Snap.Hutao/Snap.Hutao/View/MainView.xaml.cs
@@ -5,7 +5,6 @@ using Microsoft.UI.Xaml.Controls;
using Snap.Hutao.Core;
using Snap.Hutao.Core.Logging;
using Snap.Hutao.Core.Threading;
-using Snap.Hutao.Extension;
using Snap.Hutao.Service.Abstraction;
using Snap.Hutao.Service.Navigation;
using Snap.Hutao.View.Page;
diff --git a/src/Snap.Hutao/Snap.Hutao/View/Page/AnnouncementContentPage.xaml.cs b/src/Snap.Hutao/Snap.Hutao/View/Page/AnnouncementContentPage.xaml.cs
index 5cf3e316..9a0850c9 100644
--- a/src/Snap.Hutao/Snap.Hutao/View/Page/AnnouncementContentPage.xaml.cs
+++ b/src/Snap.Hutao/Snap.Hutao/View/Page/AnnouncementContentPage.xaml.cs
@@ -5,7 +5,7 @@ using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Navigation;
using Microsoft.Web.WebView2.Core;
using Snap.Hutao.Core;
-using Snap.Hutao.Extension;
+using Snap.Hutao.Core.Threading;
using Snap.Hutao.Service.Navigation;
using Windows.System;
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/AchievementViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/AchievementViewModel.cs
index e6f5dd47..eba53191 100644
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/AchievementViewModel.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/AchievementViewModel.cs
@@ -10,7 +10,6 @@ using Snap.Hutao.Control;
using Snap.Hutao.Control.Extension;
using Snap.Hutao.Core.Threading;
using Snap.Hutao.Core.Threading.CodeAnalysis;
-using Snap.Hutao.Extension;
using Snap.Hutao.Factory.Abstraction;
using Snap.Hutao.Message;
using Snap.Hutao.Model.InterChange.Achievement;
@@ -403,8 +402,8 @@ internal class AchievementViewModel
string json;
try
{
- Task task = Clipboard.GetContent().GetTextAsync().AsTask();
- json = await task.ConfigureAwait(false);
+ await ThreadHelper.SwitchToMainThreadAsync();
+ json = await Clipboard.GetContent().GetTextAsync();
}
catch (COMException ex)
{
@@ -465,7 +464,7 @@ internal class AchievementViewModel
};
ImportResult result;
- using (await importingDialog.InitializeWithWindow(mainWindow).BlockAsync().ConfigureAwait(false))
+ await using (await importingDialog.InitializeWithWindow(mainWindow).BlockAsync().ConfigureAwait(false))
{
result = await achievementService.ImportFromUIAFAsync(archive, uiaf.List, option).ConfigureAwait(false);
}
diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/GachaLogViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/GachaLogViewModel.cs
index 99941c5a..5f844d14 100644
--- a/src/Snap.Hutao/Snap.Hutao/ViewModel/GachaLogViewModel.cs
+++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/GachaLogViewModel.cs
@@ -123,7 +123,7 @@ internal class GachaLogViewModel : ObservableObject, ISupportCancellation
private async Task RefreshByWebCacheAsync()
{
- Statistics = await gachaLogService.RefreshAsync();
+ //Statistics = await gachaLogService.RefreshAsync();
}
private async Task RefreshByManualInputAsync()