我不知道如何打开多个图像,但由于所有方法都是异步的,因此不应该按顺序遍历文件,而是要平行打开所有文件。
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);
的
所以不是这样(在这里你就等着前面的图像开始加载下一个之前加载)
这将初始化一系列加载图像的等待任务,然后同时等待所有这些任务,以便它们将并行执行。
您需要将代码旋转到单独的线程。你阻止了UI线程,这会给你带来的延迟。 –