private void _startConversionJob() { if (working) { return; } working = true; cancel = false; buttonCONVERT.Visible = false; buttonCANCEL.Visible = true; doubleBuffer1.Refresh(); _outputList.Clear(); YOffset = 0; _outputToInfo("Start Conversion:"); _getExtension(); _getPreviewSize(); _allPages = checkBoxPAGES.Checked; _pagesToConvert = new List <int>(); if (!_allPages) { foreach (int p in _decodePageRange(textBoxPAGES.Text)) { _pagesToConvert.Add(p); } } try { _path = fileFieldAndBrowser1.FileName; _dpi = int.Parse(toolStripTextBoxWithLabelDPI.TextBoxText); _multiFiles = oneFilePerPageToolStripMenuItem.Checked; _overwrite = overwriteToolStripMenuItem.Checked; RegistryAccess.SaveEntryValue_ToRegistry(_regDPI, _dpi); RegistryAccess.SaveEntryValue_ToRegistry(_regOVW, _overwrite); RegistryAccess.SaveEntryValue_ToRegistry(_regMulti, _multiFiles); RegistryAccess.SaveEntryValue_ToRegistry(_regAllPage, _allPages); RegistryAccess.SaveEntryValue_ToRegistry(_regRangePage, textBoxPAGES.Text); RegistryAccess.SaveEntryValue_ToRegistry(_regFormat, _imageExt); RegistryAccess.SaveEntryValue_ToRegistry(_regPreviewSize, _prevSizeText); } catch (Exception ex) { _outputToInfo("Error"); _outputToInfo(ex.ToString()); return; } worker = new BackgroundWorker(); worker.DoWork += (sender, args) => { if (Directory.Exists(_path)) { string[] files = Directory.GetFiles(_path, "*.pdf"); foreach (string file in files) { _convert(file); } } else { _convert(_path); } }; worker.RunWorkerCompleted += (sender, args) => { if (cancel) { _outputToInfo("Cancelled"); _outputToInfo(); } else { _outputToInfo("Done"); _outputToInfo(); } doubleBuffer1.Refresh(); buttonCONVERT.Visible = true; buttonCANCEL.Visible = false; working = false; }; worker.RunWorkerAsync(); // starts the background worker // execution continues here in parallel to the background worker // update messages }