public async Task OpenOrDownloadImages(HttpClient httpClient, [CanBeNull] ProgressDialogController controller, double progressRange) { var perImageProgress = progressRange / Images.Count; foreach (var image in Images.Keys.ToArray()) { var path = SkillTree.AssetsFolderPath + image; if (!File.Exists(path)) { var stream = await httpClient.GetStreamAsync(Urlpath + image); await FileEx.WriteStreamAsync(path, stream); } Images[image] = ImageHelper.OnLoadBitmapImage(new Uri(path, UriKind.Absolute)); if (controller != null) { controller.IncreaseProgress(perImageProgress); } } }