我不知道您如何打开多个图像,但由于所有方法都是异步的,因此您不应按顺序遍历文件,而应并行打开所有文件。
因此,不要这样做(在开始加载下一个图像之前等待上一个图像加载):
foreach (var fileName in fileNames)
{
var file = await folder.GetFileAsync(fileName);
using (var stream = await file.OpenAsync(FileAccessMode.Read))
{
obj.Image = new BitmapImage();
await obj.Image.SetSourceAsync(stream);
}
}
你应该这样处理它:
// not sure about the type of obj
public async Task<Image> LoadImage(string fileName, dynamic obj)
{
var file = await folder.GetFileAsync(fileName);
using (var stream = await file.OpenAsync(FileAccessMode.Read))
{
obj.Image = new BitmapImage();
await obj.Image.SetSourceAsync(stream);
}
}
var tasks = fileNames.Select(f => LoadImage(f, obj)).ToArray();
await Task.WhenAll(tasks);
这将初始化加载图像的等待任务数组,然后同时等待所有这些任务,以便它们并行执行。