【发布时间】:2011-08-17 07:48:37
【问题描述】:
我有一个网络项目,里面没有计时器。只是一个连接到服务器并监听从网络接收任何数据的 tcpclient。
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,但这似乎是其余数据的基础——否则你不知道你是否有完整的消息...?还有——看书时为什么脸红?
标签: c# .net networking tcpclient