我正在尝试制作一个递归方法,将一个图片框添加到表单中,间隔为500毫秒,这意味着,我希望每500毫秒新的图片框出现在表单上。但是,图片框仅在方法运行完毕后出现(在我的情况下为8次)。换句话说,只有4秒后,图片框出现了,而我期望每500毫秒看一次。
这是我的递归方法:
public void QueenPos(bool[,] a,int x,int y,int c)
{
for (int i = y; i < a.GetLength(0); i++)
{
**some code**
PictureBox im = new PictureBox();
im.SizeMode = PictureBoxSizeMode.StretchImage;
im.Image = Image.FromFile(@"path");
im.Size = new Size(40, 40);
im.Location = new Point((x * 50) + 305, ((i * 50) + 55));
Controls.Add(im);
im.BringToFront();
Thread.Sleep(500);
QueenPos(a, x + 1, 0, c + 1);
}
}
}
如果可能的话,我宁愿不使用新的线程来处理添加图片框。
非常感谢任何帮助。
答案 0 :(得分:4)
永远不要在UI线程上睡觉。
相反,您应该使用WinForms计时器。
答案 1 :(得分:2)
上面说的是关于不在UI线程上睡觉的说法。
但是,您可以尝试以下操作,而不是Thread.Sleep(500)
来电
int count = 0
while(count++<10)
{
Application.DoEvents();
Thread.Sleep(50);
}