【发布时间】:2010-10-24 21:40:57
【问题描述】:
我正在编写一些代码,在其中初始化一个对象(在本例中为表单),然后该对象处于空闲状态,直到它接收到来自某人的消息,或者直接调用其方法之一。
在我的表单中,我有一个列表框 (lTester),它显示了对该表单的所有调用。在运行时出现以下错误:
跨线程操作无效: 从 a 访问的控件“lTester” 线程以外的线程 创建于。
我没有手动启动任何线程,事实上我从未使用过它们,也不真正了解 C# 如何在内部管理 UI 组件。有没有办法解决这个问题?
【问题讨论】:
-
收到消息时如何更新列表框?你能显示你的代码吗?检查 Control.InvokeRequired 属性(System.Windows.Forms)bit.ly/c8dws8
-
收到消息是什么意思?是来自其他组件吗?
-
刮掉消息部分。我通过 lTester.Items.Add(""); 更新我的列表框命令。换句话说,我有一个名为 update 的方法,并在其中运行上述命令。所以从另一个类我会调用 tester.update(x)
标签: c# multithreading exception-handling