From dc3fbdb732ef8752f1645ab4e4631ef6140a98fb Mon Sep 17 00:00:00 2001 From: Liam Sho Date: Tue, 18 Apr 2023 00:13:23 +0800 Subject: [PATCH] feat: config file write lock --- src/MaaWpfGui/Helper/ConfigurationHelper.cs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/MaaWpfGui/Helper/ConfigurationHelper.cs b/src/MaaWpfGui/Helper/ConfigurationHelper.cs index 4a0aeed92d..bada132f0a 100644 --- a/src/MaaWpfGui/Helper/ConfigurationHelper.cs +++ b/src/MaaWpfGui/Helper/ConfigurationHelper.cs @@ -27,6 +27,8 @@ namespace MaaWpfGui.Helper private static readonly ILogger _logger = Log.ForContext(); + private static readonly object _lock = new object(); + public delegate void ConfigurationUpdateEventHandler(string key, string oldValue, string newValue); public static event ConfigurationUpdateEventHandler ConfigurationUpdateEvent; @@ -91,9 +93,9 @@ namespace MaaWpfGui.Helper public static bool DeleteValue(string key) { var old = string.Empty; - if (_kvs.ContainsKey(key)) + if (_kvs.TryGetValue(key, out var kv)) { - old = _kvs[key]; + old = kv; } _kvs.Remove(key); @@ -174,7 +176,7 @@ namespace MaaWpfGui.Helper /// Save configuration file /// /// The result of saving process - public static bool Save() + private static bool Save() { if (Released) { @@ -189,7 +191,10 @@ namespace MaaWpfGui.Helper try { - File.WriteAllText(_configurationFile, jsonStr); + lock (_lock) + { + File.WriteAllText(_configurationFile, jsonStr); + } } catch (Exception e) {