0

我正在尝试创建一个递归方法,它以 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);
        }
    }
}

如果可能的话,我宁愿不使用负责添加图片框的新线程。

任何帮助将非常感激。

4

2 回答 2

4

永远不要在 UI 线程上休眠。

相反,您应该使用 WinForms 计时器。

于 2012-08-31T21:19:31.790 回答
2

上面所说的关于不在 UI 线程上睡眠是正确的。

但是,您可以尝试以下方法而不是您的Thread.Sleep(500)电话

int count = 0
while(count++<10)
{
Application.DoEvents();
Thread.Sleep(50);
}
于 2012-08-31T21:51:31.837 回答