我不知道如何打開多個圖像,但由於所有方法都是異步的,因此不應該按順序遍歷文件,而是要平行打開所有文件。
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線程,這會給你帶來的延遲。 –