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

问题描述

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

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

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

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

代码:

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

解决方法

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...