0

我正在尝试快速连续显示 3 张图像,每张图像大约 200 毫秒。这是我现在拥有的代码:

        for (int i = 0; i < 3; i++) 
        {
            if ((_currentGridPos >= 0 && _currentGridPos < 2) || (_currentGridPos >= 3 && _currentGridPos < 5))
            {
                pictureBox1.Image = Image.FromFile(@"C:\Users\Nyago\Images\g" + _currentGridPos + "_r" + i + ".JPG");
                pictureBox1.Refresh();
                Thread.Sleep(200);
            }
        }

我在使用此代码时遇到的问题是图像没有显示在我的图片框中,只是暂停而已。如果有人可以帮助我,将不胜感激!

4

2 回答 2

3

我建议你标记方法async并使用Task.Delay

private async void DoSomething()
{
    for (int i = 0; i < 3; i++) 
    {
        if ((_currentGridPos >= 0 && _currentGridPos < 2) || (_currentGridPos >= 3 && _currentGridPos < 5))
        {
            pictureBox1.Image = Image.FromFile(@"C:\Users\Nyago\Images\g" + _currentGridPos + "_r" + i + ".JPG");
            pictureBox1.Refresh();
            await Task.Delay(200);//<--Note Task.Delay don't block UI
        }
    }
}
于 2013-10-21T09:01:51.497 回答
0

您的代码使 UI 线程处于忙碌状态,因此会阻塞 UI(包括更新其图形状态)。避免使用Thread.Sleep(200);; 改用计时器或异步/等待。这样,UI 线程在等待 200 毫秒过去时不会被阻塞。

于 2013-10-21T09:22:16.817 回答