diff --git a/Application/IO/NetworkGameLogReader.cs b/Application/IO/NetworkGameLogReader.cs index e474a386..a58ffa5d 100644 --- a/Application/IO/NetworkGameLogReader.cs +++ b/Application/IO/NetworkGameLogReader.cs @@ -66,8 +66,8 @@ namespace IW4MAdmin.Application.IO } return Task.FromResult(Enumerable.Empty()); } - - new Thread(() => ReadNetworkData(client)).Start(); + + Task.Run(async () => await ReadNetworkData(client, _token), _token); } catch (Exception ex) { @@ -111,9 +111,9 @@ namespace IW4MAdmin.Application.IO return Task.FromResult((IEnumerable)events); } - private void ReadNetworkData(UdpClient client) + private async Task ReadNetworkData(UdpClient client, CancellationToken token) { - while (!_token.IsCancellationRequested) + while (!token.IsCancellationRequested) { // get more data IPEndPoint remoteEndpoint = null; @@ -127,7 +127,13 @@ namespace IW4MAdmin.Application.IO try { - bufferedData = client.Receive(ref remoteEndpoint); + var result = await client.ReceiveAsync(_token); + remoteEndpoint = result.RemoteEndPoint; + bufferedData = result.Buffer; + } + catch (OperationCanceledException) + { + _logger.LogDebug("Stopping network log receive"); } catch (Exception ex) { diff --git a/Application/Main.cs b/Application/Main.cs index 88cd1b1e..7bdcb8e3 100644 --- a/Application/Main.cs +++ b/Application/Main.cs @@ -153,6 +153,8 @@ namespace IW4MAdmin.Application { Console.WriteLine(e.Message); } + + _serverManager?.Stop(); Console.WriteLine(exitMessage); await Console.In.ReadAsync(new char[1], 0, 1);