【发布时间】:2011-09-28 01:46:26
【问题描述】:
我是 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;
}
我不确定我为什么要这样做,这有什么不同。不知道为什么就这样做,我真的很不高兴。
提前致谢
【问题讨论】:
标签: c# winforms multithreading textbox