TcpListener listener=new TcpListener(m_Port);
listener.Start();
Thread ListenerThread=new Thread(new ThreadStart(AccecptRequest));
ListenerThread.Start();
private void AccecptRequest()
{
while(true)
{
if(listener.Pending())
{ }
else
{
Thread.Sleep(100);
}
}
}怎么listener.Pending()这句代码会造成内存泄露啊??????
望高手指点
listener.Start();
Thread ListenerThread=new Thread(new ThreadStart(AccecptRequest));
ListenerThread.Start();
private void AccecptRequest()
{
while(true)
{
if(listener.Pending())
{ }
else
{
Thread.Sleep(100);
}
}
}怎么listener.Pending()这句代码会造成内存泄露啊??????
望高手指点
解决方案 »
- 如何识别HTML中的不特定element
- 如何设置右键菜单
- 线程如何循环执行?
- 100分 跪求 解决办法~!!!!!!!!!!!!!!!!!!!卸载指定进程中的指定模块``以及停止指定进程中的指定线程`` ```在线等!!!!
- 关于窗口关闭与打开的问题
- C#移动过程的暂停怎么实现?
- 紧急求助。。。在线等。。。VS2005,WEb安装项目问题
- 是选择.NET好呢?还是专注于Java?
- 200分求C#写的Com组件例子!(收到给分)
- 为何我的Visual Studio.net总提示"VC开发包不可用或未注册"
- datagridview中如何实现父子表???
- 建议楼主封utyeertdsf123() 的id,看了一下午他的广告!
内存以8k递增,而且很快,1秒几次.private void AccecptRequest()
{
while(true)
{
Thread.Sleep(100);
}
}
这样就正常.
TcpListener.AcceptSocket
来替换Pending试试。
if(listener.Pending())
{
Socket s=this.listener.AcceptSocket();
TCPServerSession.Add(s);
}
{
if (listener.Pending())
{
try
{
TcpClient client = listener.AcceptTcpClient();
client.ReceiveTimeout = 60000;
ThreadPool.QueueUserWorkItem(new WaitCallback(ReceiveData), client);
}
catch (Exception e)
{
WriteLog(DateTime.Now.ToString() + " LogServer Exception" + e.Message + "\r\n" + e.StackTrace);
}
}
else
{
Thread.Sleep(1000);
}
而listener.AcceptSocket()返回的是socket
怎么替换啊????
{
Socket s=this.listener.AcceptSocket();//Block current thread till some messages received from socket
TCPServerSession.Add(s);
}
{
while(true)
{
listener.Pending();
Thread.Sleep(100);
}
}这样都有问题,只要有listener.Pending();就造成内存泄露
我真是搞不明白啊
好象很多人都这样用啊
我是Thread.Sleep(20);
没发现占用内存有明显增长,而且,当对窗体有操作时候,APPLICATION还会自动释放一部分内存.
原先我以为一定要用listener.Pending();