如何在不冻结应用程序的情况下从URL加载图像?

时间:2020-09-01 13:31:48

标签: c# winforms picturebox

我在PictureBox中有一些foreach个对象。

它将循环所有PictureBox,并从Internet为其加载图像。每个PictureBox都有不同的图片下载。

效果很好,但是问题是应用程序冻结,直到所有图像加载完毕。

是否有一种方法可以使它们一次出现,而不是同时出现?

代码:

index++;                
lpb[index].Load(url); 
//lpb is a list of PictureBoxes (List<PictureBox>)

1 个答案:

答案 0 :(得分:2)

使用LoadAsync代替Load。如文档所述,您还应该将WaitOnLoad属性设置为false。

LoadProgressChangedLoadCompleted事件可用于跟踪进度。

在文档示例中:

private void startButton_Click(object sender, EventArgs e)
{
    // Ensure WaitOnLoad is false.
    pictureBox1.WaitOnLoad = false;

    // Load the image asynchronously.
    pictureBox1.LoadAsync(@"http://localhost/print.gif");
}