public static void AssignTask(IProgressDialogController progress, ITask task)
        {
            var taskManager = new TaskManager(task.Name);

            taskManager.Enqueue(task);

            var progressChangedHandler = new EventHandler((o, e) =>
            {
                progress.SetProgress(taskManager.Progress);
                if (ProgressScope.ProgressEquals(taskManager.Progress, 1.0))
                {
                    progress.CloseAsync();
                }
            });
            var statusMessageChangedHandler = new EventHandler((o, e) => progress.SetMessage(taskManager.StatusMessage));
            var isIndetermineChangedHandler = new EventHandler((o, e) => { if (taskManager.IsIndeterminate)
                                                                           {
                                                                               progress.SetIndeterminate();
                                                                           }
                                                               });

            taskManager.ProgressChanged      += progressChangedHandler;
            taskManager.StatusMessageChanged += statusMessageChangedHandler;
            taskManager.IsIndetermineChanged += isIndetermineChangedHandler;

            taskManager.Process().Wait();

            taskManager.ProgressChanged      -= progressChangedHandler;
            taskManager.StatusMessageChanged -= statusMessageChangedHandler;
            taskManager.IsIndetermineChanged -= isIndetermineChangedHandler;
        }
Example #2
0
        private void CheckForExistedFiles(List <ExtractFileInfo> fileList)
        {
            var existedFiles = fileList.Where(f =>
            {
                if (File.Exists(f.DestinationPath))
                {
                    f.IsExisted = true;
                }
                return(f.IsExisted);
            }).ToArray();

            if (existedFiles.Length == 0 || this.OverwriteStrategy != OverwriteStrategy.Ask)
            {
                _task = _task.ContinueWith(task => this.ApplyOverwriteStrategy(this.OverwriteStrategy, existedFiles))
                        .ContinueWith(task => this.ExtractFiles(fileList));
            }
            else
            {
                _task = _task.ContinueWith(task => _progressController.CloseAsync().Wait())
                        .ContinueWith(task => this.QueryOverwriteStrategy(fileList, existedFiles));
            }
        }