diff --git a/Source/LibationAvalonia/ViewModels/MainVM.BackupCounts.cs b/Source/LibationAvalonia/ViewModels/MainVM.BackupCounts.cs index 7991a044..52bddb06 100644 --- a/Source/LibationAvalonia/ViewModels/MainVM.BackupCounts.cs +++ b/Source/LibationAvalonia/ViewModels/MainVM.BackupCounts.cs @@ -77,6 +77,6 @@ partial class MainVM if (Configuration.Instance.AutoDownloadEpisodes && stats.PendingBooks + stats.pdfsNotDownloaded > 0) - _ = BackupAllBooksAsync(stats.LibraryBooks); + BackupAllBooks(stats.LibraryBooks); } } diff --git a/Source/LibationAvalonia/ViewModels/MainVM.Liberate.cs b/Source/LibationAvalonia/ViewModels/MainVM.Liberate.cs index a750f7ed..359de0f8 100644 --- a/Source/LibationAvalonia/ViewModels/MainVM.Liberate.cs +++ b/Source/LibationAvalonia/ViewModels/MainVM.Liberate.cs @@ -16,16 +16,18 @@ partial class MainVM /// This gets called by the "Begin Book and PDF Backups" menu item. public async Task BackupAllBooks() - => await BackupAllBooksAsync(await Task.Run(DbContexts.GetUnliberated_Flat_NoTracking)); + { + var books = await Task.Run(DbContexts.GetUnliberated_Flat_NoTracking); + BackupAllBooks(books); + } - /// Queues backup for the given library subset (menu, auto-download after scan, etc.). - private async Task BackupAllBooksAsync(IEnumerable books) + private void BackupAllBooks(IEnumerable books) { try { var unliberated = books.UnLiberated().ToArray(); - await Dispatcher.UIThread.InvokeAsync(() => + Dispatcher.UIThread.Invoke(() => { if (ProcessQueue.QueueDownloadDecrypt(unliberated)) setQueueCollapseState(false); diff --git a/Source/LibationWinForms/Form1.Liberate.cs b/Source/LibationWinForms/Form1.Liberate.cs index cfa8d1fe..6eea9ad5 100644 --- a/Source/LibationWinForms/Form1.Liberate.cs +++ b/Source/LibationWinForms/Form1.Liberate.cs @@ -16,31 +16,24 @@ public partial class Form1 private async void beginBookBackupsToolStripMenuItem_Click(object? _ = null, EventArgs? __ = null) { var library = await Task.Run(DbContexts.GetUnliberated_Flat_NoTracking); - await BackupAllBooksAsync(library); + BackupAllBooks(library); } - private Task BackupAllBooksAsync(IEnumerable books) + private void BackupAllBooks(IEnumerable books) { try { var unliberated = books.UnLiberated().ToArray(); - void queue() + Invoke(() => { if (processBookQueue1.ViewModel.QueueDownloadDecrypt(unliberated)) SetQueueCollapseState(false); - } - - if (InvokeRequired) - Invoke(queue); - else - queue(); + }); } catch (Exception ex) { Serilog.Log.Logger.Error(ex, "An error occurred while backing up all library books"); } - - return Task.CompletedTask; } private async void beginPdfBackupsToolStripMenuItem_Click(object sender, EventArgs e) diff --git a/Source/LibationWinForms/Form1._NonUI.cs b/Source/LibationWinForms/Form1._NonUI.cs index f1f84eb2..5506166d 100644 --- a/Source/LibationWinForms/Form1._NonUI.cs +++ b/Source/LibationWinForms/Form1._NonUI.cs @@ -32,7 +32,7 @@ public partial class Form1 return; if ((libraryStats.PendingBooks + libraryStats.pdfsNotDownloaded) > 0) - _ = BackupAllBooksAsync(libraryStats.LibraryBooks); + BackupAllBooks(libraryStats.LibraryBooks); }; }