Итак, у меня есть функция, которая загружает список идентификаторов изображений, затем у меня есть цикл, который добавляет progressRing для каждого идентификатора и устанавливает имя кольца прогресса для идентификатора. Затем у меня есть эта функция, чтобы заменить кольцо прогресса, если загрузка завершена.
public async void getImagesLoop()
{
while (loop == true)
{
loop = false;
foreach (UIElement child in stackpanel.Children)
{
if (child is ProgressRing)
{
var ring = (ProgressRing)child;
if (await ApplicationData.Current.LocalFolder.TryGetItemAsync("image_" + ring.Name + ".jpg") != null)
{
var tmp = new Image();
tmp.Margin = new Thickness(0, 0, 0, 50);
tmp.Margin = new Thickness(0, 50, 0, 50);
tmp.Name = ring.Name;
tmp.DoubleTapped += Tmp_DoubleTapped;
tmp.Source = new BitmapImage(new Uri("ms-appdata:///local/image_" + ring.Name + ".jpg", UriKind.Absolute));
var location = stackpanel.Children.IndexOf(child);
Debug.WriteLine("Replacing " + location);
stackpanel.Children.RemoveAt(location);
stackpanel.Children.Insert(location, tmp);
Debug.WriteLine("Done replacing");
}
else
{
loop = true;
}
}
}
}
}
Тем не менее, он пропускает первое изображение. (image_2.jpg, image_3.jpg), поэтому image_1.jpg отсутствует.
Вот и отладка:
Replacing 1
Done replacing
Done
Replacing 0
Done replacing
Done
Replacing 2
Done replacing
Done
Я вызываю цикл следующим образом:
loop = true;
getImagesLoop();
Кроме того, я не думаю, что это очень оптимизировано, так что бы оптимизировать его, чтобы не было утечек памяти?
ОБНОВЛЕНИЕ 1:
Итак, я запустил его снова, и теперь есть первое и третье изображение, а не второе изображение. Отлаживать:
Replacing 0
Done replacing
Done
Replacing 1
Done replacing
Done
Replacing 2
Done replacing
Done
Я предполагаю, что это заказная штука, кажется, что второй, которого заменили, в конечном итоге пропал.
Replacing 0
не означает, что оно действительно обработало первое изображение? Возможно, вам потребуется уточнить связь между вашими индексами и именами файлов изображений. - person Simon MᶜKenzie   schedule 14.12.2015