一个异步聊天时,客户端接受服务器发送过来的的信息的显示问题……
我用vs2005做了一个Socket异步聊天程序。当客户端成功连接到服务器时,客户端要接受服务器发送过来的成功连接的信息。 
          在客户端用   MessageBox.Show( "与服务器 "   +   clientSocket.RemoteEndPoint.ToString()   +    "相连接 ");能够显示信息,但用listBox1.Items.Add( "与服务器 "+clientSocket.RemoteEndPoint.ToString()+ "相连接 ");就显示不了。 
 提示:线程间操作无效:   从不是创建控件“listBox1”的线程访问它。   
 为了解决这个问题,我用委托的方法:   
 public   delegate   IAsyncResult   myDelegate();   
 private   void   DelegateMothod() 
 { 
             if   (listBox1.InvokeRequired) 
             { 
                         listBox1.Invoke(new   myDelegate(ConnetionServer)); 
             } 
 }     
 private   void   ConnetionServer(IAsyncResult   ar) 
 { 
             clientSocket   =(Socket)ar.AsyncState; 
             try    
             { 
                         clientSocket.EndConnect(ar);   
                         listBox1.Items.Add( "与服务器 "+clientSocket.RemoteEndPoint.ToString()+ "相连接 ");                                             
                         clientSocket.BeginReceive(data,   0,   dataSize,   SocketFlags.None,   new   AsyncCallback(ReceiveData),   clientSocket);       
             } 
             catch    
             { 
                         MessageBox.Show( "与服务器连接失败! "); 
             }   
 }     
 但是提示:错误 1	“ConnetionServer”的重载均与委托“Client.Form1.myDelegate”不匹配  	 
 把委托改成   void类型还是提示上面的错误。   
 到底怎么回事呀?请帮我看看是什么原因吧,谢谢了先!(可能vs2003没用这个问题吧,但vs2005有)   
------解决方案--------------------用委托,异步操作和窗体之间的控件不再一个线程内. 
 delegate void ListboxCallback(string text);   
 private void SetText(string text) 
         { 
             if (listBox1.InvokeRequired) 
             { 
                 ListboxCallback d = new ListboxCallback(SetText); 
                 this.Invoke(d, new object[] { text }); 
             } 
             else 
             { 
                 listBox1.Items.Add(text); 
             } 
         } 
 试试吧
------解决方案--------------------异步回调的方法,,, 
 首先你的listbox是在frm上直接添加的,其他线程操作通过委托是可以调用的没问题的, 
 private void ConnetionServer(IAsyncResult ar) 
 { 
     clientSocket =(Socket)ar.AsyncState; 
     try  
     { 
         clientSocket.EndConnect(ar);   
         ///在这调用settext(str);            
         clientSocket.BeginReceive(data, 0, dataSize, SocketFlags.None, new AsyncCallback(ReceiveData), clientSocket);   
     } 
     catch  
     { 
         MessageBox.Show( "与服务器连接失败! "); 
     }   
 } 
------解决方案--------------------你也可以用事件,当接收到的时候触发该事件,在frm里面+=该事件.试试