Это код, который я использую для получения одного изображения. Этот код работает в цикле, чтобы заполнить изображение и работает. Но иногда, если есть задержка в получении изображения. Приложение застревает в заполнении данных
var resp = await Client.GetAsync(imageUrl);
if (resp.IsSuccessStatusCode)
{
imageData = await resp.Content.ReadAsByteArrayAsync();
}
Это цикл, который вызывает загрузку изображений отдельных продуктов:
List<Task> tasks = new List<Task>();
foreach (var product in productsList)
{
var task = DownloadImage(eImageType.Brand, product);
tasks.Add(task);
}
код для динамического построения объекта изображения
foreach(var brand in brands)
{
brand.ImageSource = ImageSource.FromStream(() =>
{
if (brand.ImageData != null)
return new MemoryStream(brand.ImageData);
else
return null;
});
}
Код для отображения вида изображения в XAMLS
<AbsoluteLayout>
<ffimage:CachedImage Source="blugegb" HorizontalOptions="Fill"
DownsampleWidth="180"
DownsampleUseDipUnits="True"
AbsoluteLayout.LayoutBounds="0,0,1,1" AbsoluteLayout.LayoutFlags="All"
VerticalOptions="Fill"
Aspect="AspectFill"/>
<ffimage:CachedImage Source="{Binding ImageSource}" HorizontalOptions="Fill"
DownsampleWidth="100"
DownsampleUseDipUnits="True"
AbsoluteLayout.LayoutBounds=".5,.5,.8,.8" AbsoluteLayout.LayoutFlags="All"
VerticalOptions="Fill"
Aspect="AspectFit"/>
</AbsoluteLayout>