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(); } }