예제 #1
0
        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();
            }
        }
예제 #2
0
 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();
         }
     }
 }