1
0
mirror of https://github.com/RaidMax/IW4M-Admin.git synced 2025-06-13 00:28:10 -05:00

improve threading synchronization for BaseConfigurationHandlers

This commit is contained in:
RaidMax
2023-04-04 21:42:17 -05:00
parent d3544b4519
commit 3d3a8e7027
2 changed files with 20 additions and 6 deletions

View File

@ -49,8 +49,10 @@ namespace IW4MAdmin.Application.Misc
{
try
{
await _onSaving.WaitAsync();
await using var fileStream = File.OpenRead(FileName);
_configuration = await JsonSerializer.DeserializeAsync<T>(fileStream, _serializerOptions);
await fileStream.DisposeAsync();
}
catch (FileNotFoundException)
@ -66,6 +68,13 @@ namespace IW4MAdmin.Application.Misc
ConfigurationFileName = FileName
};
}
finally
{
if (_onSaving.CurrentCount == 0)
{
_onSaving.Release(1);
}
}
}
public async Task Save()
@ -76,6 +85,7 @@ namespace IW4MAdmin.Application.Misc
await using var fileStream = File.Create(FileName);
await JsonSerializer.SerializeAsync(fileStream, _configuration, _serializerOptions);
await fileStream.DisposeAsync();
}
finally