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

How to load an image in C# Winforms from an URL without application freezing?

我在 foreach 中有一些 PictureBox 对象。 它循环所有 PictureBoxes 并为它们加载来自 Internet 的图像。每个 PictureBox 都有不同的图片下载。 它运行良好,但问题是应用程序冻结,直到所有图像加载完毕。 有没有办法让它们一个一个出现,而不是同时出现?

代码:

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

谢谢!

使用LoadAsync instead of Load. As the docs explain you should also set the WaitOnLoad属性为假

LoadProgressChanged and LoadCompleted 事件可用于跟踪进度。

来自文档示例:

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");
}