Example #1
0
 private void ToolStripSplitButtonConvert_ButtonClick(object sender, EventArgs e)
 {
     if (BackgroundWorkerProcess.IsBusy)
     {
         if (cts != null)
         {
             cts.Cancel();
         }
     }
     else if (FolderBrowserDialogSave.ShowDialog(this) == DialogResult.OK)
     {
         OutDir = FolderBrowserDialogSave.SelectedPath;
         ListViewUPdb.AllowDrop                  = false;
         ToolStripSplitButtonConvert.Text        = "取消";
         ToolStripMenuItemCompatibility.Enabled  = false;
         ToolStripMenuItemIdeal.Enabled          = false;
         ToolStripSplitButtonConvert.ToolTipText = "取消转换任务。";
         BackgroundWorkerProcess.RunWorkerAsync();
     }
 }
Example #2
0
        private void BackgroundWorkerProcess_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            cts = new CancellationTokenSource();

            var po = new ParallelOptions
            {
                CancellationToken      = cts.Token,
                MaxDegreeOfParallelism = Environment.ProcessorCount
            };

            try
            {
                Parallel.For(0, Books.Count, po, i =>
                {
                    if (Books[i].ToEPub($"{OutDir}\\《{Books[i].Title}》{Books[i].Author}_{DateTime.Now.ToString("yyMMddHHmmssffff")}.epub", ToolStripMenuItemIdeal.Checked))
                    {
                        BackgroundWorkerProcess.ReportProgress(i, "完成");
                    }
                    else
                    {
                        BackgroundWorkerProcess.ReportProgress(i, "失败");
                    }
                });
            }
            catch (Exception ex)
            {
                var q = ex;
            }
            finally
            {
                if (cts != null)
                {
                    cts.Dispose(); cts = null;
                }
            }
        }