I am reading from NetworkStream, which is in a while loop. The problem is that I see 100% CPU usage. Is there any way to stop this?
Here is what I still have:
while (client != null && client.Connected) { NetworkStream stream = client.GetStream(); data = null; try { // Check if we are still connected. if (client.Client.Poll(0, SelectMode.SelectRead)) { byte[] checkConn = new byte[1]; if (client.Client.Receive(checkConn, SocketFlags.Peek) == 0) { throw new IOException(); } } if (stream.DataAvailable) { //Read the first command WriteToConsole("Waiting for next command"); data = ReadStringFromClient(client, stream); WriteToConsole("Received Command: " + data); } }
... The code continues ...
ReadStringFromClient Code:
private string ReadStringFromClient(TcpClient clientATF, NetworkStream currentStream) { int i; string builtString; byte[] stringFromClient = new byte[256]; if (clientATF.Connected && currentStream.CanRead) { i = currentStream.Read(stringFromClient, 0, stringFromClient.Length); builtString = System.Text.Encoding.ASCII.GetString(stringFromClient, 0, i); } else { return "Connection Error"; } return builtString; }
source share