From 0ff8da2cf0b965d2371d247d49e410291d173c73 Mon Sep 17 00:00:00 2001 From: Michael Bucari-Tovo Date: Sun, 15 May 2022 09:30:44 -0600 Subject: [PATCH] Add await and make cancel async --- Source/LibationWinForms/Form1.Liberate.cs | 8 ++++---- Source/LibationWinForms/ProcessQueue/ProcessBook.cs | 5 ++--- .../LibationWinForms/ProcessQueue/ProcessQueueControl.cs | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/Source/LibationWinForms/Form1.Liberate.cs b/Source/LibationWinForms/Form1.Liberate.cs index da85747f..d1369d7a 100644 --- a/Source/LibationWinForms/Form1.Liberate.cs +++ b/Source/LibationWinForms/Form1.Liberate.cs @@ -10,12 +10,12 @@ namespace LibationWinForms private void Configure_Liberate() { } //GetLibrary_Flat_NoTracking() may take a long time on a hugh library. so run in new thread - private void beginBookBackupsToolStripMenuItem_Click(object sender, EventArgs e) - => Task.Run(() => processBookQueue1.AddDownloadDecrypt(ApplicationServices.DbContexts.GetLibrary_Flat_NoTracking() + private async void beginBookBackupsToolStripMenuItem_Click(object sender, EventArgs e) + => await Task.Run(() => processBookQueue1.AddDownloadDecrypt(ApplicationServices.DbContexts.GetLibrary_Flat_NoTracking() .Where(lb => lb.Book.UserDefinedItem.PdfStatus is DataLayer.LiberatedStatus.NotLiberated || lb.Book.UserDefinedItem.BookStatus is DataLayer.LiberatedStatus.NotLiberated))); - private void beginPdfBackupsToolStripMenuItem_Click(object sender, EventArgs e) - => Task.Run(() => processBookQueue1.AddDownloadPdf(ApplicationServices.DbContexts.GetLibrary_Flat_NoTracking() + private async void beginPdfBackupsToolStripMenuItem_Click(object sender, EventArgs e) + => await Task.Run(() => processBookQueue1.AddDownloadPdf(ApplicationServices.DbContexts.GetLibrary_Flat_NoTracking() .Where(lb => lb.Book.UserDefinedItem.PdfStatus is DataLayer.LiberatedStatus.NotLiberated))); private async void convertAllM4bToMp3ToolStripMenuItem_Click(object sender, EventArgs e) diff --git a/Source/LibationWinForms/ProcessQueue/ProcessBook.cs b/Source/LibationWinForms/ProcessQueue/ProcessBook.cs index edae6212..e76c151b 100644 --- a/Source/LibationWinForms/ProcessQueue/ProcessBook.cs +++ b/Source/LibationWinForms/ProcessQueue/ProcessBook.cs @@ -139,15 +139,14 @@ namespace LibationWinForms.ProcessQueue return Result; } - public void Cancel() + public async Task Cancel() { try { if (CurrentProcessable is AudioDecodable audioDecodable) { //There's some threadding bug that causes this to hang if executed synchronously. - Task.Run(audioDecodable.Cancel); - + await Task.Run(audioDecodable.Cancel); } } catch (Exception ex) diff --git a/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs b/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs index 17ac8815..d8b5db76 100644 --- a/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs +++ b/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs @@ -301,12 +301,12 @@ namespace LibationWinForms.ProcessQueue /// /// index of the within /// The clicked control to update - private void VirtualFlowControl2_ButtonClicked(int queueIndex, string buttonName, ProcessBookControl panelClicked) + private async void VirtualFlowControl2_ButtonClicked(int queueIndex, string buttonName, ProcessBookControl panelClicked) { ProcessBook item = Queue[queueIndex]; if (buttonName == nameof(panelClicked.cancelBtn)) { - item.Cancel(); + await item.Cancel(); Queue.RemoveQueued(item); virtualFlowControl2.VirtualControlCount = Queue.Count; }