【发布时间】:2011-09-30 20:54:51
【问题描述】:
我有 2 个线程。 在我的工作线程(不是主线程)中,我创建了一个图片框数组,有时我需要向主窗体添加一个新的图片框,但我无权访问此窗体。我在某处读到需要使用调用方法,但我只知道如何更新一个图片框或标签。 我不知道如何用这段代码做到这一点:
food[x].Location = new Point(100,100);
food[x].Size = new Size(10,10);
food[x].BorderStyle = BorderStyle.Fixed3D;
food[x].ImageLocation = "food.png";
this.Controls.Add(food[x]);
food[x].BringToFront;
谁能帮帮我?
【问题讨论】:
-
你可能不应该有多个线程。
-
SLaks 是对的。这听起来像是一场等待发生的灾难。当两个线程试图访问相同的 UI 元素时,很难正确地进行 UI 编程。通常它的工作方式是只允许 UI 线程与 UI 元素对话。如果您有需要与 UI 对话的工作线程,那么您需要为工作线程设置某种方式与 UI 线程对话,然后 UI 线程将消息传递给 UI 对象。
-
你是代码示例还是教程?
-
将(创建)PictureBox 放入 UI 线程(可能是您正在谈论的“主”线程),然后从另一个线程调用 Dispatcher.BeginInvoke 以操作其中的所有对象主线程。
标签: c# multithreading forms main