Загрузка изображения с JSON не завершена - PullRequest
0 голосов
/ 08 октября 2019

У меня есть JSON, который содержит строку и ссылку на изображение. Я хочу загрузить все изображения.

Код:

question.hasImg = hasimg;
                                if (question.hasImg == "1")
                                {
                                    JsonArray gambar = groupObjectSoal["images"].GetArray();\
                                    foreach (JsonValue groupValueGambar in gambar)
                                    {
                                        string imgSoal = groupValueGambar.GetString();
                                        imgName = System.IO.Path.GetFileNameWithoutExtension(imgSoal);
                                        DownloadGambar(imgSoal);

                                        IReadOnlyList<DownloadOperation> downloads = null;
                                        downloads = await BackgroundDownloader.GetCurrentDownloadsAsync();
                                        int i = 0;

                                        if (downloads.Count > 0)
                                        {
                                            gambardownloading = new string[downloads.Count];
                                            foreach (DownloadOperation download in downloads)
                                            {
                                                // list download tryout
                                                gambardownloading[i] = download.ResultFile.Name;
                                                i++;
                                            }
                                        }
                                    }
                                }
StorageFolder installedLocation = ApplicationData.Current.LocalFolder;
        private async void DownloadGambar(string fileLocation)
        {
            var uri = new Uri(fileLocation);
            var downloader = new BackgroundDownloader();
            StorageFolder library = await installedLocation.CreateFolderAsync("library", CreationCollisionOption.OpenIfExists);
            StorageFolder gambar = await library.CreateFolderAsync("gambar", CreationCollisionOption.OpenIfExists);
            StorageFolder idName = await gambar.CreateFolderAsync(quiz.ID.ToString(), CreationCollisionOption.OpenIfExists);
           StorageFile file = await idName.CreateFileAsync(imgName + ".JPG",
                CreationCollisionOption.ReplaceExisting);
            DownloadOperation download = downloader.CreateDownload(uri, file);
            await GambarStartDownloadAsync(download);
        }
private void GambarProgressCallback(DownloadOperation obj)
        {
            double progress
              = ((double)obj.Progress.BytesReceived / obj.Progress.TotalBytesToReceive);
            progress = Math.Round((double)progress, 2);
            if (progress >= 1.0)
            {
                _activeDownload = null;
            }
        }

У меня проблема, т.е. загружаются не все изображения (например, есть 27 изображений, но только 25изображения, которые были успешно загружены). Как решить эту проблему?

1 Ответ

0 голосов
/ 08 октября 2019

Я думаю, вы можете использовать try-catch в методе загрузки изображений, и я только добавляю файл успешной загрузки в список. И я добавляю большой палец, который показывает, что загрузка не удалась, в список, чтобы показать элемент, загрузка которого не удалась.

И затем мы можем снова попытаться загрузить файл в фоновом режиме и установить изображение при успешной загрузке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...