From 713d4de30ec88ef6b760d141531a5ae24a9e7922 Mon Sep 17 00:00:00 2001 From: Marco Gavelli Date: Mon, 16 Dec 2024 00:28:17 +0100 Subject: [PATCH 1/2] Do not block during call to QueryRecycleBin --- src/Files.App/Data/Items/LocationItem.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Files.App/Data/Items/LocationItem.cs b/src/Files.App/Data/Items/LocationItem.cs index 5e0933c15561..1439efcf82cc 100644 --- a/src/Files.App/Data/Items/LocationItem.cs +++ b/src/Files.App/Data/Items/LocationItem.cs @@ -128,9 +128,9 @@ public sealed class RecycleBinLocationItem : LocationItem public async void RefreshSpaceUsed(object? sender, FileSystemEventArgs e) { - await MainWindow.Instance.DispatcherQueue.EnqueueOrInvokeAsync(() => + await MainWindow.Instance.DispatcherQueue.EnqueueOrInvokeAsync(async () => { - SpaceUsed = StorageTrashBinService.GetSize(); + SpaceUsed = await Task.Run(() => StorageTrashBinService.GetSize()); }); } @@ -152,10 +152,10 @@ public override object ToolTip public RecycleBinLocationItem() { - SpaceUsed = StorageTrashBinService.GetSize(); - StorageTrashBinService.Watcher.ItemAdded += RefreshSpaceUsed; StorageTrashBinService.Watcher.ItemDeleted += RefreshSpaceUsed; + + RefreshSpaceUsed(null, new(WatcherChangeTypes.Changed, "", null)); } } } From 9e961c49457e0834376c4ee8b5055fa684e3c9c2 Mon Sep 17 00:00:00 2001 From: Marco Gavelli Date: Mon, 16 Dec 2024 00:47:27 +0100 Subject: [PATCH 2/2] Small refactor --- src/Files.App/Data/Items/LocationItem.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Files.App/Data/Items/LocationItem.cs b/src/Files.App/Data/Items/LocationItem.cs index 1439efcf82cc..e0e3e915941a 100644 --- a/src/Files.App/Data/Items/LocationItem.cs +++ b/src/Files.App/Data/Items/LocationItem.cs @@ -128,7 +128,12 @@ public sealed class RecycleBinLocationItem : LocationItem public async void RefreshSpaceUsed(object? sender, FileSystemEventArgs e) { - await MainWindow.Instance.DispatcherQueue.EnqueueOrInvokeAsync(async () => + await RefreshSpaceUsedAsync(); + } + + private Task RefreshSpaceUsedAsync() + { + return MainWindow.Instance.DispatcherQueue.EnqueueOrInvokeAsync(async () => { SpaceUsed = await Task.Run(() => StorageTrashBinService.GetSize()); }); @@ -155,7 +160,7 @@ public RecycleBinLocationItem() StorageTrashBinService.Watcher.ItemAdded += RefreshSpaceUsed; StorageTrashBinService.Watcher.ItemDeleted += RefreshSpaceUsed; - RefreshSpaceUsed(null, new(WatcherChangeTypes.Changed, "", null)); + _ = RefreshSpaceUsedAsync(); } } }