socket接收数据一定要写在一个死循环里吗?这样占用CPU太高了.有不有其他的什么方法?
socket接收数据一定要写在一个死循环里吗?这样占用CPU太高了.有不有其他的什么方法?谢谢
------解决方案--------------------使用异步Socket模式,当收到数据或新连接时,有回调过程被调用,与事件类似。
------解决方案--------------------private System.Threading.ManualResetEvent receiveEvent = new System.Threading.ManualResetEvent(false);   
         private void ReceiveData() 
         { 
             while (true) 
             { 
                 receiveEvent.Reset(); 
                 if (m_Socket != null && m_Socket.Connected) 
                 { 
                     StateObject stateObject = new StateObject(); 
                     stateObject.workSocket = m_Socket; 
                     NetworkStream stream = new NetworkStream(m_Socket); 
                     try 
                     { 
                         stream.BeginRead(stateObject.buffer, 0, MaxBuffer, new AsyncCallback(ReceiveData), stateObject);   
                     } 
                     catch 
                     { 
                     } 
                 } 
                 receiveEvent.WaitOne(); 
             } 
         }   
         private void ReceiveData(IAsyncResult ar) 
         { 
             receiveEvent.Set(); 
         }
------解决方案--------------------将接收数据的过程交给其他线程处理,或者使用如 clawclaw(唏嘘的胡渣)  提供的异步接收方式。不使用while死循环!
------解决方案--------------------用异步触发吧,不要用死循环,下面是人家的类,直接拷过来就能用的,测试过, 
 需要例子给我邮箱 
 http://www.jtzjsc.com.cn/46959.html