UWP C#使用等待加载图像 我想加载PADGGLoad事件中的所有图像,但是如果图像的数量太多,一些ListVIEW条目将显示空白,所以我需要手动刷新,但这不是我想要的。

UWP C#使用等待加载图像 我想加载PADGGLoad事件中的所有图像,但是如果图像的数量太多,一些ListVIEW条目将显示空白,所以我需要手动刷新,但这不是我想要的。,c#,.net,async-await,uwp-xaml,C#,.net,Async Await,Uwp Xaml,如何等待加载所有图像 这是加载页面中的代码 rootObject = JsonConvert.DeserializeObject<Decode2Info>(text); foreach (Decode1Info info in rootObject.decodes) { info.LoadImage(); } collection = new ObservableCollection<Decode1Info>(rootObject.de

如何等待加载所有图像

这是加载页面中的代码

 rootObject = JsonConvert.DeserializeObject<Decode2Info>(text);
 foreach (Decode1Info info in rootObject.decodes)
    {
      info.LoadImage();
    }

 collection = new ObservableCollection<Decode1Info>(rootObject.decodes);
 SListView.ItemsSource = collection;
 progressView.IsActive = false;

因为它像JsonConvert.DeserializeObject一样导致了奇怪的事情,我把它放到了任务中,现在它工作了,这是我所期望的

 rootObject = await Task.Run(() =>
                {
                    return JsonConvert.DeserializeObject<Decode2Info>(text);
                });
rootObject=等待任务。运行(()=>
{
返回JsonConvert.DeserializeObject(文本);
});

问题在于您没有等待
LoadImage()
方法,因此在执行
foreach
下面的代码时,它们不会完成。将该方法更改为此(因为您不能等待
a
作废

然后这条线

info.LoadImage();

通过首先开始所有必需的
LoadImage()
s,让它们同时运行,然后等待它们全部完成,您也有机会获得:

rootObject = JsonConvert.DeserializeObject<Decode2Info>(text);

List<Task> tasks = rootObject.decodes.Select(LoadImage);

await Task.WhenAll(tasks);
rootObject=JsonConvert.DeserializeObject(文本);
List tasks=rootObject.decodes.Select(LoadImage);
等待任务。何时(任务);
info.LoadImage();
await info.LoadImage();
rootObject = JsonConvert.DeserializeObject<Decode2Info>(text);

List<Task> tasks = rootObject.decodes.Select(LoadImage);

await Task.WhenAll(tasks);