private void ProcessFilesThread(object state) { ProcessFilesThreadParams threadParams = state as ProcessFilesThreadParams; try { MidiFileMapper mapper; if (Settings.Default.UseInputFolder) { mapper = new MidiFileMapper(threadParams.MappingRules); } else { mapper = new MidiFileMapper(threadParams.MappingRules, threadParams.SelectedFiles); } mapper.Progress += new EventHandler <ProgressEventArgs>(mapper_Progress); mapper.Start(); } catch (Exception e) { progressLog1.ReportProgress(new ProgressEventArgs(ProgressMessageType.Error, "{0}", e.Message)); } finally { workQueued = false; canExitApp = true; canMovePrevious = true; canMoveNext = true; OnUpdated(); } }
private void buttonBegin_Click(object sender, EventArgs e) { if (workQueued) { MessageBox.Show("Please wait until the current operation has finished", Application.ProductName); } else { ProcessFilesThreadParams threadParams = new ProcessFilesThreadParams( selectMappingPage.MappingRules, selectFilesPage.SelectedFiles); progressLog1.ClearLog(); workQueued = ThreadPool.QueueUserWorkItem(new WaitCallback(ProcessFilesThread), threadParams); if (workQueued) { canExitApp = false; canMoveNext = false; canMovePrevious = false; OnUpdated(); } } }