Exemple #1
0
        private void HandleChanged(object sender, EventArgs e)
        {
            if (ProgressMonitor.TaskName.Length == 0)
            {
                return;
            }

            int    percentComplete = -1;
            string status          = ProgressMonitor.LeafSubTaskName;

            if (!double.IsNaN(ProgressMonitor.RemainingWorkUnits))
            {
                percentComplete = (int)Math.Ceiling((ProgressMonitor.TotalWorkUnits - ProgressMonitor.RemainingWorkUnits) * 100 / ProgressMonitor.TotalWorkUnits);
                status          = String.Format("{0,3}% complete.  {1}", percentComplete, status);
            }
            else if (status.Length == 0)
            {
                status = @" ";
            }

            var progressRecord = new ProgressRecord(0, ProgressMonitor.TaskName, status);

            progressRecord.RecordType       = ProgressMonitor.IsRunning ? ProgressRecordType.Processing : ProgressRecordType.Completed;
            progressRecord.CurrentOperation = ProgressMonitor.Leaf.Status;
            progressRecord.PercentComplete  = percentComplete;
            cmdlet.PostMessage(() => cmdlet.WriteProgress(progressRecord));
        }
Exemple #2
0
        /// <summary>
        /// Logs a message.
        /// </summary>
        /// <param name="severity">The log message severity.</param>
        /// <param name="message">The message to log.</param>
        /// <param name="exceptionData">The exception to log (it can be null).</param>
        protected override void LogImpl(LogSeverity severity, string message, ExceptionData exceptionData)
        {
            // The PowerShell logging methods may throw InvalidOperationException
            // or NotImplementedException if the PowerShell host is not connected
            // or does not support the requested service.  So we eat those exceptions.
            cmdlet.PostMessage(delegate
            {
                try
                {
                    if (exceptionData != null)
                    {
                        message = string.Concat(message, "\n", exceptionData.ToString());
                    }

                    switch (severity)
                    {
                    case LogSeverity.Error:
                        cmdlet.WriteError(new ErrorRecord(new Exception(message), "Error", ErrorCategory.NotSpecified, "Gallio"));
                        break;

                    case LogSeverity.Warning:
                        cmdlet.WriteWarning(message);
                        break;

                    case LogSeverity.Important:
                    case LogSeverity.Info:
                        cmdlet.WriteVerbose(message);
                        break;

                    case LogSeverity.Debug:
                        cmdlet.WriteDebug(message);
                        break;
                    }
                }
                catch (NotImplementedException)
                {
                }
                catch (InvalidOperationException)
                {
                }
            });
        }