1

问候,我是编程新手。

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

但我收到一条错误消息,指出它们位于单独的线程中。所以在网上搜索后我想出了这个:

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

这工作得很好接受我不知道发生了什么。我刚刚粘贴了代码,它工作了。

目前,尽管我需要以不同的方式执行此操作,因为编译器说它不能在此操作中执行 > < != 操作。

请就如何最好地实施这一点提出建议?

非常感谢您。

4

1 回答 1

4

对 Windows 窗体控件的访问本质上不是线程安全的。如果您有两个或更多线程操作控件的状态,则可能会强制控件进入不一致的状态。其他与线程相关的错误是可能的,例如竞争条件和死锁。确保以线程安全的方式执行对控件的访问非常重要。

在不使用 Invoke 方法的情况下从创建控件的线程以外的线程调用控件是不安全的。

于 2010-01-22T17:33:54.480 回答