fix: added process blocking to prevent competing processes from running at the same time

This commit is contained in:
Michael Green
2023-07-07 10:09:41 +10:00
parent ecfc258cba
commit 92b7daeb1f
3 changed files with 56 additions and 6 deletions

View File

@@ -34,7 +34,7 @@ namespace gaseous_server
// "Timed Hosted Service is working. Count: {Count}", count);
foreach (ProcessQueue.QueueItem qi in ProcessQueue.QueueItems) {
if (DateTime.UtcNow > qi.NextRunTime || qi.Force == true) {
if ((DateTime.UtcNow > qi.NextRunTime || qi.Force == true) && CheckProcessBlockList(qi) == true) {
qi.Execute();
}
}
@@ -54,6 +54,26 @@ namespace gaseous_server
{
_timer?.Dispose();
}
private bool CheckProcessBlockList(ProcessQueue.QueueItem queueItem)
{
if (queueItem.Blocks.Count > 0)
{
foreach (ProcessQueue.QueueItem qi in ProcessQueue.QueueItems)
{
if (queueItem.Blocks.Contains(qi.ItemType) && qi.ItemState == ProcessQueue.QueueItemState.Running)
{
return false;
}
}
return true;
}
else
{
return true;
}
}
}
}