C# 4.0 Windows窗体+交叉线程消息传递异常

C# 4.0 Windows窗体+交叉线程消息传递异常,c#-4.0,C# 4.0,在我的项目中,我有一个C1类,在这个类中我一直在监听客户机,如果从客户机收到任何消息,那么我需要更新表单类中的文本框文本。我正在使用在C1类中创建的委托,我在form.cs中使用了它。在该函数中,我正在更新我的文本框 请帮帮我听起来您在分配textbox的Text属性时需要使用Invoke,因为只允许从主UI线程更新UI元素,并且您可能在另一个线程上接收TCP通信消息 您可以执行以下操作: private void UpdateText(string text) { if (textBox

在我的项目中,我有一个C1类,在这个类中我一直在监听客户机,如果从客户机收到任何消息,那么我需要更新表单类中的文本框文本。我正在使用在C1类中创建的委托,我在form.cs中使用了它。在该函数中,我正在更新我的文本框


请帮帮我

听起来您在分配textbox的Text属性时需要使用Invoke,因为只允许从主UI线程更新UI元素,并且您可能在另一个线程上接收TCP通信消息

您可以执行以下操作:

private void UpdateText(string text)
{
   if (textBox1.InvokeRequired)
      textBox1.Invoke(new Action(() => UpdateText(text)));
   else
      textBox1.Text = text;                     
}
它将检查是否在UI线程上调用了该方法,如果没有,则在更新文本之前将请求传递给UI线程。如果需要异步行为,可以使用textBox1.BeginInvoke而不是textBox1.Invoke


有关更多信息,请参见示例。

您提供的信息不足。你如何倾听客户的意见?使用HttpWebRequest?但是我在另一个类中获取数据,从那里我使用委托更新textbox,那里有获取错误,请帮助我,你可以发布一些代码来显示你当前如何进行此更新吗?我的类没有继承Form类,但我使用委托从普通c类调用Form类listbox,我该怎么做