Я довольно новичок в C #, так что прости меня, если это немного глупый вопрос.
Как бы то ни было, я пишу небольшое приложение для чата, которое, похоже, пока идет хорошо, но я столкнулся с проблемой, которую, похоже, исправил, но надеюсь выяснить, почему мне нужно сделать это таким образом.
Когда я получаю сообщение, я хочу обновить текстовое поле, поэтому я использую:
txtConnectedID.Text = "test";
Но я получаю эту ошибку:
System.InvalidOperationException was unhandled by user code
Message=Cross-thread operation not valid: Control 'txtConnectedID' accessed from a thread other than the thread it was created on.
Теперь, я думаю, это как-то связано с остановкой метода, запущенного дважды и не корректным обновлением? Я не на 100% в этом. Итак, теперь у меня есть делегат для метода, который принимает строку, и я вызываю:
private delegate void stringDelegate(string s);
BeginInvoke(new stringDelegate(writeToIPBox), new object[] { e.ConnectedIP.ToString() });
private void writeToIPBox(string newIP)
{
txtConnectedID.Text = newIP;
}
Я не уверен, почему я делаю это, как это отличается. Я не очень-то счастлив, просто делаю это так, не зная, почему.
Заранее спасибо