Remove non-periodic workers after they finish

This commit is contained in:
2025-07-21 12:35:18 +02:00
parent 8408407a8e
commit 5202bfe782

View File

@@ -146,17 +146,19 @@ public static class Tranga
RunningWorkers.Remove(worker);
foreach (BaseWorker newWorker in task.Result)
AllWorkers.Add(newWorker);
if (worker is not IPeriodic)
AllWorkers.Remove(worker);
task.Dispose();
}
}
private static IEnumerable<BaseWorker> DueWorkers(this IEnumerable<BaseWorker> workers)
{
return workers.Where(w =>
return workers.Where(worker =>
{
if (w.State is >= WorkerExecutionState.Running and < WorkerExecutionState.Completed)
if (worker.State is >= WorkerExecutionState.Running and < WorkerExecutionState.Completed)
return false;
if (w is IPeriodic periodicWorker)
if (worker is IPeriodic periodicWorker)
return periodicWorker.IsDue;
return true;
});