From 9a8c4d60934eda40b9f995946abd7b03a554f963 Mon Sep 17 00:00:00 2001 From: ChsBuffer <33744752+chsbuffer@users.noreply.github.com> Date: Tue, 4 May 2021 10:17:33 +0800 Subject: [PATCH] Fix: CloseLogFile() Thread safety --- Netch/Controllers/Guard.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Netch/Controllers/Guard.cs b/Netch/Controllers/Guard.cs index ee09e581..b9517441 100644 --- a/Netch/Controllers/Guard.cs +++ b/Netch/Controllers/Guard.cs @@ -199,15 +199,22 @@ namespace Netch.Controllers _logStreamWriter!.WriteLine(line); } + private readonly object LogStreamLock = new(); private void CloseLogFile() { if (!RedirectToFile) return; - _flushFileStreamTimer.Enabled = false; - _logStreamWriter?.Close(); - _logFileStream?.Close(); - _logStreamWriter = _logStreamWriter = null; + if (_logFileStream == null) + return; + + lock (LogStreamLock) + { + _flushFileStreamTimer.Enabled = false; + _logStreamWriter?.Close(); + _logFileStream?.Close(); + _logStreamWriter = _logStreamWriter = null; + } } #endregion