Add await and make cancel async

This commit is contained in:
Michael Bucari-Tovo 2022-05-15 09:30:44 -06:00
parent c0ef3ccbea
commit 0ff8da2cf0
3 changed files with 8 additions and 9 deletions

View File

@ -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)

View File

@ -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)

View File

@ -301,12 +301,12 @@ namespace LibationWinForms.ProcessQueue
/// </summary>
/// <param name="queueIndex">index of the <see cref="ProcessBook"/> within <see cref="Queue"/></param>
/// <param name="panelClicked">The clicked control to update</param>
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;
}