public override void EndProcessing() { try { _progressManager.TotalCount = _input.Count; foreach (var i in _input) { var processed = Pool.ProcessedCount + Pool.GetPartiallyProcessedCount(); _progressManager.UpdateCurrentProgressRecord($"Starting processing of {i}", processed); WriteProgress(_progressManager.ProgressRecord); while (!Pool.TryAddInput(ScriptBlock, i)) { WriteOutputs(); } } while (!Pool.WaitForAllPowershellCompleted(100)) { _progressManager.UpdateCurrentProgressRecord("All work queued. Waiting for remaining work to complete.", Pool.ProcessedCount); WriteProgress(_progressManager.ProgressRecord); if (Stopping) { return; } WriteOutputs(); } WriteOutputs(); } finally { WriteProgress(_progressManager.Completed()); } }
public override void EndProcessing() { try { _progressManager.TotalCount = _input.Count; var lastPercentComplete = -1; foreach (var i in _input) { var processed = Pool.GetEstimatedProgressCount(); _lastEstimate = processed; _progressManager.SetCurrentOperation($"Starting processing of {i}"); _progressManager.UpdateCurrentProgressRecord(processed); var pr = _progressManager.ProgressRecord; if (lastPercentComplete != pr.PercentComplete) { WriteProgress(pr); lastPercentComplete = pr.PercentComplete; } while (!Pool.TryAddInput(ScriptBlock, i)) { WriteOutputs(); } } _progressManager.SetCurrentOperation("All work queued. Waiting for remaining work to complete."); while (!Pool.WaitForAllPowershellCompleted(100)) { WriteProgressIfUpdated(); if (Stopping) { return; } WriteOutputs(); } WriteOutputs(); } finally { _progressManager.UpdateCurrentProgressRecord(Pool.GetEstimatedProgressCount()); WriteProgress(_progressManager.Completed()); } }