Как решить ошибку Winforms Control.Invoke? - PullRequest
1 голос
/ 13 июня 2010

Как решить " Control.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();

1 Ответ

0 голосов
/ 13 июня 2010

Делая то, что он говорит?Звучит так, будто вы находитесь в каком-то обратном вызове, но (из-за близости потоков) вы можете только общаться с элементами управления в связанном потоке.Итак:

string newAnswer = LongComplexCode(); // on worker thread here
someControl.Invoke((MethodInvoker) delegate {
    /* your work here, e.g. */
    someControl.Text = newAnswer; // on UI thread here
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...