diff --git a/src/Snap.Hutao/Snap.Hutao/Core/IO/FileOperation.cs b/src/Snap.Hutao/Snap.Hutao/Core/IO/FileOperation.cs index 63b07293..5b80fd6f 100644 --- a/src/Snap.Hutao/Snap.Hutao/Core/IO/FileOperation.cs +++ b/src/Snap.Hutao/Snap.Hutao/Core/IO/FileOperation.cs @@ -50,14 +50,11 @@ internal static class FileOperation { bool result = false; - HRESULT hr = CoCreateInstance(in Win32.UI.Shell.FileOperation.CLSID, default, CLSCTX.CLSCTX_INPROC_SERVER, in IFileOperation.IID, out IFileOperation* pFileOperation); - if (SUCCEEDED(hr)) + if (SUCCEEDED(CoCreateInstance(in Win32.UI.Shell.FileOperation.CLSID, default, CLSCTX.CLSCTX_INPROC_SERVER, in IFileOperation.IID, out IFileOperation* pFileOperation))) { - hr = SHCreateItemFromParsingName(sourceFileName.AsSpan(), default, in IShellItem.IID, out IShellItem* pSourceShellItem); - if (SUCCEEDED(hr)) + if (SUCCEEDED(SHCreateItemFromParsingName(sourceFileName, default, in IShellItem.IID, out IShellItem* pSourceShellItem))) { - hr = SHCreateItemFromParsingName(destFileName.AsSpan(), default, in IShellItem.IID, out IShellItem* pDestShellItem); - if (SUCCEEDED(hr)) + if (SUCCEEDED(SHCreateItemFromParsingName(destFileName, default, in IShellItem.IID, out IShellItem* pDestShellItem))) { pFileOperation->MoveItem(pSourceShellItem, pDestShellItem, default, default); @@ -82,11 +79,9 @@ internal static class FileOperation { bool result = false; - HRESULT hr = CoCreateInstance(in Win32.UI.Shell.FileOperation.CLSID, default, CLSCTX.CLSCTX_INPROC_SERVER, in IFileOperation.IID, out IFileOperation* pFileOperation); - if (SUCCEEDED(hr)) + if (SUCCEEDED(CoCreateInstance(in Win32.UI.Shell.FileOperation.CLSID, default, CLSCTX.CLSCTX_INPROC_SERVER, in IFileOperation.IID, out IFileOperation* pFileOperation))) { - hr = SHCreateItemFromParsingName(path.AsSpan(), default, in IShellItem.IID, out IShellItem* pShellItem); - if (SUCCEEDED(hr)) + if (SUCCEEDED(SHCreateItemFromParsingName(path, default, in IShellItem.IID, out IShellItem* pShellItem))) { pFileOperation->DeleteItem(pShellItem, default); diff --git a/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs b/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs index 47fdbc1f..4db47dc9 100644 --- a/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs +++ b/src/Snap.Hutao/Snap.Hutao/ViewModel/Setting/SettingViewModel.cs @@ -241,10 +241,11 @@ internal sealed partial class SettingViewModel : Abstraction.ViewModel .CreateForIndeterminateProgressAsync(SH.ViewModelSettingResetStaticResourceProgress) .ConfigureAwait(false); - using (await dialog.BlockAsync(taskContext).ConfigureAwait(false)) + await using (await dialog.BlockAsync(taskContext).ConfigureAwait(false)) { + await taskContext.SwitchToBackgroundAsync(); StaticResource.FailAll(); - await Task.Run(() => Directory.Delete(Path.Combine(runtimeOptions.LocalCache, nameof(ImageCache)), true)).ConfigureAwait(false); + Directory.Delete(Path.Combine(runtimeOptions.LocalCache, nameof(ImageCache)), true); UnsafeLocalSetting.Set(SettingKeys.Major1Minor10Revision0GuideState, GuideState.StaticResourceBegin); } diff --git a/src/Snap.Hutao/Snap.Hutao/Win32/UI/Shell/FileOperation.cs b/src/Snap.Hutao/Snap.Hutao/Win32/UI/Shell/FileOperation.cs index e3efc500..2178bb34 100644 --- a/src/Snap.Hutao/Snap.Hutao/Win32/UI/Shell/FileOperation.cs +++ b/src/Snap.Hutao/Snap.Hutao/Win32/UI/Shell/FileOperation.cs @@ -6,7 +6,7 @@ using System.Runtime.InteropServices; namespace Snap.Hutao.Win32.UI.Shell; -[Guid("3ad05575-8857-4850-9277-11b85bdb8e09")] +[Guid("3AD05575-8857-4850-9277-11B85BDB8E09")] internal readonly struct FileOperation { internal static unsafe ref readonly Guid CLSID diff --git a/src/Snap.Hutao/Snap.Hutao/Win32/UI/Shell/IFileOperation.cs b/src/Snap.Hutao/Snap.Hutao/Win32/UI/Shell/IFileOperation.cs index e55948ea..9850974e 100644 --- a/src/Snap.Hutao/Snap.Hutao/Win32/UI/Shell/IFileOperation.cs +++ b/src/Snap.Hutao/Snap.Hutao/Win32/UI/Shell/IFileOperation.cs @@ -52,9 +52,12 @@ internal unsafe struct IFileOperation return ThisPtr->DeleteItem((IFileOperation*)Unsafe.AsPointer(ref this), psiItem, pfopsItem); } - public unsafe HRESULT MoveItem(IShellItem* psiItem, IShellItem* psiDestinationFolder, [AllowNull] PCWSTR pszNewName, IFileOperationProgressSink* pfopsItem) + public unsafe HRESULT MoveItem(IShellItem* psiItem, IShellItem* psiDestinationFolder, [AllowNull] string szNewName, IFileOperationProgressSink* pfopsItem) { - return ThisPtr->MoveItem((IFileOperation*)Unsafe.AsPointer(ref this), psiItem, psiDestinationFolder, pszNewName, pfopsItem); + fixed (char* pszNewName = szNewName) + { + return ThisPtr->MoveItem((IFileOperation*)Unsafe.AsPointer(ref this), psiItem, psiDestinationFolder, pszNewName, pfopsItem); + } } public unsafe HRESULT PerformOperations()