diff --git a/CUETools.CTDB.EACPlugin/FormMetadata.Designer.cs b/CUETools.CTDB.EACPlugin/FormMetadata.Designer.cs index a92d3a8..e9f2517 100644 --- a/CUETools.CTDB.EACPlugin/FormMetadata.Designer.cs +++ b/CUETools.CTDB.EACPlugin/FormMetadata.Designer.cs @@ -54,6 +54,7 @@ // backgroundWorker1 // this.backgroundWorker1.WorkerReportsProgress = true; + this.backgroundWorker1.WorkerSupportsCancellation = true; this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork); this.backgroundWorker1.ProgressChanged += new System.ComponentModel.ProgressChangedEventHandler(this.backgroundWorker1_ProgressChanged); this.backgroundWorker1.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.backgroundWorker1_RunWorkerCompleted); diff --git a/CUETools.CTDB.EACPlugin/FormMetadata.cs b/CUETools.CTDB.EACPlugin/FormMetadata.cs index 327b960..e04d59f 100644 --- a/CUETools.CTDB.EACPlugin/FormMetadata.cs +++ b/CUETools.CTDB.EACPlugin/FormMetadata.cs @@ -80,6 +80,10 @@ namespace CUETools.CTDB.EACPlugin { backgroundWorker1.ReportProgress(0, metadata); } + if (backgroundWorker1.CancellationPending) + { + throw new Exception(); + } foreach (var coverart in metadata.coverart) { var uri = Options.CoversSearch == CTDBCoversSearch.Large ? @@ -101,7 +105,7 @@ namespace CUETools.CTDB.EACPlugin public void Form1_DoubleClick(object sender, MouseEventArgs e) { - if (this.m_currently_selected != null && !this.cdinfo) + if (this.m_currently_selected != null && !this.cdinfo && !backgroundWorker1.IsBusy) { this.DialogResult = DialogResult.OK; } @@ -219,7 +223,7 @@ namespace CUETools.CTDB.EACPlugin private void listView1_MouseDoubleClick(object sender, MouseEventArgs e) { - if (this.cdinfo) + if (this.cdinfo && !backgroundWorker1.IsBusy) { var ht = listView1.HitTest(e.Location); if (ht.Item != null) @@ -319,6 +323,13 @@ namespace CUETools.CTDB.EACPlugin private void FormMetadata_FormClosing(object sender, FormClosingEventArgs e) { + if (backgroundWorker1.IsBusy) + { + backgroundWorker1.CancelAsync(); + e.Cancel = true; + return; + } + Options.MetadataWindowSize = this.Size; } } diff --git a/CUETools.CTDB.EACPlugin/FormMetadata.resx b/CUETools.CTDB.EACPlugin/FormMetadata.resx index f5fab27..6264696 100644 --- a/CUETools.CTDB.EACPlugin/FormMetadata.resx +++ b/CUETools.CTDB.EACPlugin/FormMetadata.resx @@ -128,7 +128,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABQ - CgAAAk1TRnQBSQFMAgEBAwEAARgBAAEYAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CgAAAk1TRnQBSQFMAgEBAwEAASABAAEgAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA