コード例 #1
0
        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;
        }
コード例 #2
0
        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));
        }