我有一个网络项目,其中没有计时器。只有一个TCP客户端连接到服务器并监听从网络接收任何数据。
TcpClient _TcpClient = new TcpClient(_IpAddress, _Port);
_ConnectThread = new Thread(new ThreadStart(ConnectToServer));
_ConnectThread.IsBackground = true;
_ConnectThread.Start();
private void ConnectToServer()
{
try
{
NetworkStream _NetworkStream = _TcpClient.GetStream();
byte[] _RecievedPack = new byte[1024 * 1000];
string _Message = string.Empty;
int _BytesRead;
int _Length;
while (_Flage)
{
_BytesRead = _NetworkStream.Read(_RecievedPack, 0, _RecievedPack.Length);
_Length = BitConverter.ToInt32(_RecievedPack, 0);
_Message = UTF8Encoding.UTF8.GetString(_RecievedPack, 4, _Length);
if (_BytesRead != 0)
{
//call a function to manage the data
_NetworkStream.Flush();
}
}
}
catch (Exception exp)
{
// call a function to alarm that connection is false
}
}
但是一段时间之后,我的应用程序的CPU使用率会上升(90%,85%,...),即使没有接收到任何数据。请问有人可以给我一些关于CPU使用率的提示吗?我完全茫然无措,不知道应该检查项目的哪个部分!
_BytesRead
,但那似乎是数据的基础,否则你不知道是否有完整的消息...?另外 - 为什么读取时要刷新缓冲区? - Marc Gravell