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()这句代码会造成内存泄露啊??????
望高手指点

解决方案 »

  1.   

    我自己已经验证了很多次了,就是listener.Pending()出问题
    内存以8k递增,而且很快,1秒几次.private void AccecptRequest()
    {
       while(true)
      {
            Thread.Sleep(100);
      }
    }
    这样就正常.
      

  2.   


    TcpListener.AcceptSocket 
    来替换Pending试试。
      

  3.   

    我是这样处理的
    if(listener.Pending())
    {
    Socket s=this.listener.AcceptSocket();
    TCPServerSession.Add(s);
    }
      

  4.   

    while (true)
                    {
                        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);
                        }
      

  5.   

    那listener.Pending()返回的是bool
    而listener.AcceptSocket()返回的是socket
    怎么替换啊????
      

  6.   

    只要没有那listener.Pending()就正常
      

  7.   

    while(true)
    {
    Socket s=this.listener.AcceptSocket();//Block current thread till some messages received from socket
    TCPServerSession.Add(s);
    }
      

  8.   

    private void AccecptRequest()
    {
       while(true)
      {
        listener.Pending();
            Thread.Sleep(100);
      }
    }这样都有问题,只要有listener.Pending();就造成内存泄露
    我真是搞不明白啊
    好象很多人都这样用啊
      

  9.   

    奇怪了,我测试却没有任何问题.
    我是Thread.Sleep(20);
    没发现占用内存有明显增长,而且,当对窗体有操作时候,APPLICATION还会自动释放一部分内存.
      

  10.   

    多谢,多谢
    原先我以为一定要用listener.Pending();