From 4853871ea11a659df54c8e4eaa9641878c572e39 Mon Sep 17 00:00:00 2001 From: ReinforceZwei <39955851+ReinforceZwei@users.noreply.github.com> Date: Sun, 7 Mar 2021 14:20:54 +0800 Subject: [PATCH] Add lock to chatlog file (#1488) --- MinecraftClient/ChatBots/ChatLog.cs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/MinecraftClient/ChatBots/ChatLog.cs b/MinecraftClient/ChatBots/ChatLog.cs index 004e2be6..cabef836 100644 --- a/MinecraftClient/ChatBots/ChatLog.cs +++ b/MinecraftClient/ChatBots/ChatLog.cs @@ -19,6 +19,7 @@ namespace MinecraftClient.ChatBots private bool savePrivate = true; private bool saveInternal = true; private string logfile; + private object logfileLock = new object(); /// /// This bot saves the messages received in the specified file, with some filters and date/time tagging. @@ -112,16 +113,18 @@ namespace MinecraftClient.ChatBots { if (dateandtime) tosave = GetTimestamp() + ' ' + tosave; - - string directory = Path.GetDirectoryName(logfile); - if (!String.IsNullOrEmpty(directory) && !Directory.Exists(directory)) - Directory.CreateDirectory(directory); - FileStream stream = new FileStream(logfile, FileMode.OpenOrCreate); - StreamWriter writer = new StreamWriter(stream); - stream.Seek(0, SeekOrigin.End); - writer.WriteLine(tosave); - writer.Dispose(); - stream.Close(); + lock (logfileLock) + { + string directory = Path.GetDirectoryName(logfile); + if (!String.IsNullOrEmpty(directory) && !Directory.Exists(directory)) + Directory.CreateDirectory(directory); + FileStream stream = new FileStream(logfile, FileMode.OpenOrCreate); + StreamWriter writer = new StreamWriter(stream); + stream.Seek(0, SeekOrigin.End); + writer.WriteLine(tosave); + writer.Dispose(); + stream.Close(); + } } } }