не знаю почему не ругаеца скомпилированная версия, но появление ошибки вполне логично.
Я так предполагаю (судя по тексту исключения), что функция OnReciveMessage вызываеца асинхронно, тоесть не в основном потоке. А в вин формс программирование существует такое правило:
любые манипуляции с контролами, которые влияют на визульное отображение необходимо проводить в том потоке, в котором этот контрол был создан.Так вот, в твоем случае тебе необходимо синхронизироваться с основным потоком формы. Это можна сделать вызвав Control.Invoke функцию, которая как раз этим и занимаеца. Код может быть примерно такой:
delegate void UpdateTextCallback(string aText)
private void UpdateText(string aText)
{
this.ChatRoom_textBox.Text += aText;
}
public void OnReciveMessage(string Sender, string Reciver, string Message )
{
this.Invoke(new UpdateTextCallback(UpdateText), new object[] {"\r\n"
+ "Sender: " + Sender + "; Reciver: " + Reciver + "; Message: ;" + Message});
MessageBox.Show("Sender: " + Sender + "; Reciver: " + Reciver + "; Message: ;" +
Message);// срабатывает нормально
} |
_______________________________________________________
Never ask users what they want, or they'll tell you.