From f377cd7de1f2a2c0d9ea36f94dea2d3d13f5ea9e Mon Sep 17 00:00:00 2001 From: Oliver Booth Date: Mon, 23 Jan 2023 10:27:50 +0000 Subject: [PATCH] Wrap reading in Task.Factory.StartNew --- TcpDotNet/BaseClientNode.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/TcpDotNet/BaseClientNode.cs b/TcpDotNet/BaseClientNode.cs index 4115eb4..a9744a2 100644 --- a/TcpDotNet/BaseClientNode.cs +++ b/TcpDotNet/BaseClientNode.cs @@ -1,4 +1,4 @@ -using System.Collections.Concurrent; +using System.Collections.Concurrent; using System.Net; using System.Net.Sockets; using System.Reflection; @@ -96,7 +96,7 @@ public abstract class BaseClientNode : Node int length; try { - length = await Task.Run(networkReader.ReadInt32, cancellationToken); + length = await Task.Factory.StartNew(networkReader.ReadInt32, cancellationToken); } catch (EndOfStreamException) { @@ -120,7 +120,16 @@ public abstract class BaseClientNode : Node } using var bufferReader = new ProtocolReader(targetStream); - int packetHeader = await Task.Run(() => bufferReader.ReadInt32(), cancellationToken); + int packetHeader; + try + { + packetHeader = await Task.Factory.StartNew(bufferReader.ReadInt32, cancellationToken); + } + catch (EndOfStreamException) + { + State = ClientState.Disconnected; + throw; + } if (!RegisteredPackets.TryGetValue(packetHeader, out Type? packetType)) {