private void ProcessMultiWorker(ModelBase model, BackgroundWorker backgroundWorker) { MultiFileWorkerBase worker = (MultiFileWorkerBase)GetWorkerInstanceForModel(model); // init string m; if (worker.ProvidesItsOwnStartDirectories(model, out m)) { worker.CreateFileList(model); this.numberOfStatusItems = finishedStatusItems + (macro.WorkItems.Count - finishedWorkItems) * worker.FileCount; } else { worker.SetFileList(files); } int i = 0; worker.OneFileProcessed += delegate(object s, ProgressChangedEventArgs e) { backgroundWorker.ReportProgress((finishedStatusItems + (++i)) * 100 / numberOfStatusItems); }; // do the work worker.ProcessFileModelBase(model); // pre processing this.files = worker.GetChangedFileList(); finishedWorkItems++; finishedStatusItems += worker.FileCount; }
public virtual bool ProvidesItsOwnStartDirectories(out string message) { if (macro.WorkItems.Count == 0) { message = ""; return(false); } ModelBase firstModel = macro.WorkItems[0]; MultiFileWorkerBase firstWorker = GetWorkerInstanceForModel(firstModel) as MultiFileWorkerBase; if (firstWorker == null) { message = ""; return(false); } return(firstWorker.ProvidesItsOwnStartDirectories(firstModel, out message)); }