fix: add mutex to prevent multiple scenarios from running at once

This commit is contained in:
Andrew Welker
2024-07-19 13:09:47 -05:00
parent 5a9b876d80
commit d970d806c9

View File

@@ -5,6 +5,7 @@ using Serilog.Events;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
namespace PepperDash.Essentials.Core
{
@@ -48,6 +49,8 @@ namespace PepperDash.Essentials.Core
private int _scenarioChangeDebounceTimeSeconds = 10; // default to 10s
private Mutex _scenarioChange = new Mutex();
public EssentialsRoomCombiner(string key, EssentialsRoomCombinerPropertiesConfig props)
: base(key)
{
@@ -205,6 +208,10 @@ namespace PepperDash.Essentials.Core
}
private set
{
try
{
_scenarioChange.WaitOne();
if (value != _currentScenario)
{
// Deactivate the old scenario first
@@ -230,6 +237,11 @@ namespace PepperDash.Essentials.Core
}
}
}
finally
{
_scenarioChange.ReleaseMutex();
}
}
}
public BoolFeedback IsInAutoModeFeedback { get; private set; }