diff --git a/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs b/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs index 8c35ca70..0de13f3a 100644 --- a/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs +++ b/Source/LibationWinForms/ProcessQueue/ProcessQueueControl.cs @@ -171,12 +171,16 @@ namespace LibationWinForms.ProcessQueue if (result == ProcessBookResult.FailedRetry) Queue.Enqueue(nextBook); + else if (result == ProcessBookResult.ValidationFail) + Queue.ClearCurrent(); else if (result == ProcessBookResult.FailedAbort) return; } Queue_CompletedCountChanged(this, 0); counterTimer.Stop(); + virtualFlowControl2.VirtualControlCount = Queue.Count; + UpdateAllControls(); } public void WriteLine(string text) diff --git a/Source/LibationWinForms/ProcessQueue/TrackedQueue[T].cs b/Source/LibationWinForms/ProcessQueue/TrackedQueue[T].cs index a1f7dbe2..20bbe7e8 100644 --- a/Source/LibationWinForms/ProcessQueue/TrackedQueue[T].cs +++ b/Source/LibationWinForms/ProcessQueue/TrackedQueue[T].cs @@ -94,6 +94,23 @@ namespace LibationWinForms.ProcessQueue } } + public void ClearCurrent() + { + lock(lockObject) + Current = null; + } + + public bool RemoveCompleted(T item) + { + lock (lockObject) + { + bool removed = _completed.Remove(item); + if (removed) + CompletedCountChanged?.Invoke(this, _completed.Count); + return removed; + } + } + public void ClearQueue() { lock (lockObject)