C# 如何解决Winforms控件调用错误?

C# 如何解决Winforms控件调用错误?,c#,winforms,C#,Winforms,如何解决控件。必须使用Invoke与在分离线程错误异常上创建的控件进行交互 Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); serverSocket.Bind(new IPEndPoint(IPAddress.Loopback, portNo)); serverSocket.Listen(5); Socket client = serverS

如何解决控件。必须使用Invoke与在分离线程错误异常上创建的控件进行交互

Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
serverSocket.Bind(new IPEndPoint(IPAddress.Loopback, portNo)); 
serverSocket.Listen(5); 
Socket client = serverSocket.Accept(); 
MessageBox.Show("Client Connected"); 

//Sent to Client 
NetworkStream ns = new NetworkStream(client); 
StreamWriter writer = new StreamWriter(ns); 
writer.AutoFlush = true; 
writer.WriteLine(sb.ToString()); 

//Receive from Client NetworkStream 
Stream nets = new NetworkStream(client); 
StreamReader reader = new StreamReader(nets); 
string clientIPAddress = reader.ReadLine();

照上面说的做?这听起来像是在某种回调中,但由于线程相关性,您只能与关联线程上的控件进行对话。因此:

string newAnswer = LongComplexCode(); // on worker thread here
someControl.Invoke((MethodInvoker) delegate {
    /* your work here, e.g. */
    someControl.Text = newAnswer; // on UI thread here
});

//我的编码是,Socket serverSocket=new-SocketAddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp;serverSocket.BindNewIPEndPointIPAddress.Loopback,端口号;serverSocket.Listen5;socketclient=serverSocket.Accept;MessageBox.ShowClient已连接//发送到客户端NetworkStream ns=新NetworkStreamclient;StreamWriter writer=新的StreamWriterns;writer.AutoFlush=true;writer.writelineb.ToString//从客户端接收NetworkStream nets=新NetworkStreamclient;StreamReader=新的StreamReaderNet;字符串clientIPAddress=reader.ReadLine;编辑代码段以显示失败的代码。是否确实是这段代码导致了异常?实际上隐式创建UI控件的唯一地方是通过调用MessageBox.Show,但我之前认为该方法不必在UI主线程上运行。您的程序中是否实际使用了多线程?