From b23d533006c65b6b05babfc74106d0a63939d339 Mon Sep 17 00:00:00 2001 From: teinarss Date: Mon, 12 Apr 2021 20:24:19 +0200 Subject: [PATCH] Update Log to wait for items in worker thread --- OpenRA.Game/Support/Log.cs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/OpenRA.Game/Support/Log.cs b/OpenRA.Game/Support/Log.cs index 2488939514..3dd3d5c489 100644 --- a/OpenRA.Game/Support/Log.cs +++ b/OpenRA.Game/Support/Log.cs @@ -55,11 +55,14 @@ namespace OpenRA Channel = System.Threading.Channels.Channel.CreateUnbounded(); ChannelWriter = Channel.Writer; - Thread = new Thread(DoWork); - var cancellationTokenToken = CancellationToken.Token; - Thread.Start(cancellationTokenToken); + Thread = new Thread(DoWork) + { + Name = "OpenRA Logging Thread" + }; - Timer = new Timer(FlushToDisk, cancellationTokenToken, FlushInterval, Timeout.InfiniteTimeSpan); + Thread.Start(CancellationToken.Token); + + Timer = new Timer(FlushToDisk, CancellationToken.Token, FlushInterval, Timeout.InfiniteTimeSpan); } static void FlushToDisk(object state) @@ -83,9 +86,13 @@ namespace OpenRA var reader = Channel.Reader; while (!token.IsCancellationRequested) - if (reader.TryRead(out var item)) + { + while (reader.TryRead(out var item)) WriteValue(item); + Thread.Sleep(1); + } + while (reader.TryRead(out var item)) WriteValue(item); @@ -173,6 +180,7 @@ namespace OpenRA { CancellationToken.Cancel(); Timer.Dispose(); + Thread.Join(); } } }