Update Log to wait for items in worker thread

This commit is contained in:
teinarss
2021-04-12 20:24:19 +02:00
committed by Paul Chote
parent 1f01d0b6b1
commit b23d533006

View File

@@ -55,11 +55,14 @@ namespace OpenRA
Channel = System.Threading.Channels.Channel.CreateUnbounded<ChannelData>();
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();
}
}
}