我很新的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;
}
我不知道爲什麼我這樣做,它是如何的有什麼不同。如果不知道原因,我並不樂意這樣做。
在此先感謝
http://stackoverflow.com/questions/1523878/cross-thread-operation-not-valid-in-c –