I am reading from a NetworkStream that is in a while loop. The issue is I am seeing 100% CPU usage. Is there any way to stop this from happening?
Here is what I have so far:
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);
}
}
... 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;
}
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…