Add CriticalSection for file ops

This commit is contained in:
Andrew Welker
2020-12-08 12:54:35 -07:00
parent 748b1ca147
commit 169e897748

View File

@@ -15,6 +15,7 @@ namespace PepperDash.Essentials.Core.Presets
/// </summary>
public class DevicePresetsModel : Device
{
private CCriticalSection _fileOps = new CCriticalSection();
private readonly bool _initSuccess;
/// <summary>
@@ -101,6 +102,9 @@ namespace PepperDash.Essentials.Core.Presets
public void LoadChannels()
{
try
{
_fileOps.Enter();
PresetsAreLoaded = false;
try
{
@@ -124,6 +128,11 @@ namespace PepperDash.Essentials.Core.Presets
handler(this, EventArgs.Empty);
}
}
finally
{
_fileOps.Leave();
}
}
public void Dial(int presetNum)
{
@@ -209,6 +218,9 @@ namespace PepperDash.Essentials.Core.Presets
private void SavePresets()
{
try
{
_fileOps.Enter();
var json = JsonConvert.SerializeObject(PresetsList);
using (var file = File.Open(_filePath, FileMode.Truncate))
@@ -216,6 +228,12 @@ namespace PepperDash.Essentials.Core.Presets
file.Write(json, Encoding.UTF8);
}
}
finally
{
_fileOps.Leave();
}
}
private void Pulse(Action<bool> act)
{