我已經嘗試了幾種方法來做這件事,但我似乎無法找到一個將工作。我有一個GUI,當你按下按鈕時,所有的處理都是在一個線程上完成的。舉一個例子,如果我有以下代碼:如何從另一個線程填充面板?
public void coolMethod()
{
int a = 0;
while (a != 20)
{
addPicturebox();
a++;
Thread.Sleep(1000);
}
}
int width = 3;
int height = 3;
int imgCounter = 0;
public void addPicturebox()
{
PictureBox pb = new PictureBox();
pb.Size = new Size(50, 50);
pb.Location = new Point(width, height);
pb.ImageLocation = @"C:\Users\User1\Pictures\white.png";
pb.Show();
panel1.Controls.Add(pb);
imgCounter++;
width += 53;
if (imgCounter == 5)
{
height += 53;
width = 3;
imgCounter = 0;
}
}`
它將工作然而coolMethod()
是在不同的線程運行,我不能更新/面板上呈現來自不同的線程添加控件。
有沒有人有一個解決方案,我可以在thread1上運行coolMethod,但是一旦它調用addPicturebox()
,這個方法將在gui線程上運行,並暫停thread1直到方法結束或任何其他建議。
非常感謝,如果你可以。如果已經回答了這個問題,您可以將我也鏈接到該頁面,因爲我查看了很多人,但無法找到適用於此場景的示例。
哇,這是一個快速的反應,我已經嘗試這樣做,它完美地工作。謝謝你一堆Valjura – Faker 2014-11-24 08:44:54
@Faker如果它符合你的期望,接受答案。 – Grx70 2014-11-24 08:48:07