C#调用操作跨线程访问

时间:2010-01-22 17:23:56

标签: c# .net delegates action invoke

问候,我是编程新手。

目前我的应用程序使用委托处理/执行驻留在另一个类/对象中的方法。

但是我收到一条错误声明他们居住在separte线程中。所以在搜索网页后我想出了这个:

this.Invoke(new Action(delegate() { this.ChatRichTextBox.AppendText(EventArgs.commMessage); }));

这已经很好地接受我不知道最近会发生什么。我只是粘贴了代码而且工作正常。

目前,虽然我有必要这样做,因为编译器说它不能做> < !=此操作中的操作。

请告知如何最好地实施此目标?

非常感谢你。

1 个答案:

答案 0 :(得分:4)

  

访问Windows窗体控件是   本质上不是线程安全的。如果你   有两个或多个线程操纵   控制的状态,是可能的   迫使控制进入   不一致的状态。其他   线程相关的错误是可能的,例如   作为竞争条件和僵局。它   确保访问权限非常重要   你的控件是在一个   线程安全的方式。

     

从a调用控件是不安全的   除了创建的线程以外的线程   不使用Invoke的控件   方法