示例#1
0
        private void OnRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            OperationCoordinator.IsBusy = false;

            _progressProvider.ProgressAvailable -= OnProgressAvailable;

            if (e.Error == null)
            {
                if (e.Cancelled)
                {
                    CloseProgressWindow();
                }
                else
                {
                    OnExecuteCompleted((PackageItem)e.Result);
                    _progressWindowOpener.SetCompleted(successful: true);
                }
            }
            else
            {
                // show error message in the progress window in case of error
                LogCore(LogMessageLevel.Error, (e.Error.InnerException ?? e.Error).Message);
                _progressWindowOpener.SetCompleted(successful: false);
            }

            // write a blank line into the output window to separate entries from different operations
            WriteLineToOutputWindow(new string('=', 30));
            WriteLineToOutputWindow();

            if (ExecuteCompletedCallback != null)
            {
                ExecuteCompletedCallback();
            }
        }