代码如下:
        public  void CommuniteHelp_TCP()
        {
            while (true)
            {
                try
                {
                    MREvent.Reset();
                    tcpListener.BeginAcceptTcpClient(new AsyncCallback(AsynAccept), tcpListener);
                    MREvent.WaitOne();                }
                catch (Exception ex)
                {
                    System.Diagnostics.Debug.Print("运行方法: CommuniteHelp 发生错误:" + ex.Message);
                }            }
        }        private void AsynAccept(IAsyncResult mtcplisten) 
        {
            TcpListener mtcpListener = (TcpListener)mtcplisten.AsyncState;
            TcpClient mtcpClient = mtcpListener.EndAcceptTcpClient(mtcplisten);
            MREvent.Set();
            Thread thread_dotcp = new Thread(new ParameterizedThreadStart(ThreadAsynReceiveData));
            thread_dotcp.IsBackground = true;
            thread_dotcp.Start(mtcpClient);
            
        }
        private void ThreadAsynReceiveData(object mobj)
        {
            TcpClient mtcpClient = mobj as TcpClient;
            byte[] receiveBytes = new byte[1024];            mtcpClient.Client.BeginReceive(receiveBytes, 0, 1024, SocketFlags.None, new AsyncCallback    (doneAsynAccept), mtcpClient);
        }
private void doneAsynAccept(IAsyncResult iar)
        {
            try
            {
                lock (lockobj)
                {
                    TcpClient mtcpClient = (TcpClient)iar.AsyncState;
                     int dataCount = mtcpClient.Client.EndReceive(iar);
                        if (dataCount > 0)
                        {
                            byte[] receiveBytes = new byte[dataCount];
                            IAsyncResult Result= mtcpClient.Client.BeginReceive(receiveBytes, 0, dataCount, SocketFlags.None, new AsyncCallback(doneAsynAccept), mtcpClient);  // 这里接收不到数据,请问为什么?
                            
                            StructModel.tcpSendTo tcpsendto = new StructModel.tcpSendTo();
                            tcpsendto.point = ((IPEndPoint)mtcpClient.Client.RemoteEndPoint);
                            tcpsendto.oreceiveBytes = receiveBytes;
                            tcpsendto.receiveBytesLength = (ushort)dataCount;
                            tcpsendto.ns = mtcpClient.GetStream();
                            tcpsendto.tcpClient = mtcpClient;
                            DoWork(tcpsendto);
                        }
                    
                    
                    //mtcpClient.Close();
                    //mtcpClient = null;
                }
            }
            catch (Exception ee)
            {                ErrorLog.WriteErrorLog("CRTUClient_Udp:CRTUClient", "DoWork", "", ee);
            }
            finally
            {
                GC.Collect();
                Thread.CurrentThread.Abort();
            }        }