Одновременная и не одновременная загрузка: асинхронная и ожидающая в C#

Я пишу C#, WPF-программу с MVVM-шаблоном.

Я пытаюсь сначала загрузить несколько картинок одновременно (так как они маленькие), и когда они все закончили загрузку, ТО я хочу скачивать несколько файлов один за другим. Конечно, все время графический интерфейс не может зависнуть.

Я использую WebClient и DownloadFileAsync. Я предполагаю, что мне нужно поместить циклы в методы и объявить их асинхронными и использовать await, но все, что я пробовал, не удалось (все загрузки всегда начинаются одновременно).

большое спасибо

Изменить: Так как я много пробовал, дать хороший пример исходного кода сложно, но вот оно:

public Communication(){
    DownloadPics(downloadInfo);
    DownloadFiles(downloadInfo);
}

private void DownloadPics(List<Dictionary<string, string>> downloadInfo) {
        foreach (Dictionary<string, string> di in downloadInfo) {
            DownloadPic(di);
        }
    }


    private void DownloadBooks(List<Dictionary<string, string>> downloadInfo) {
        foreach (Dictionary<string, string> di in downloadInfo) {                
            DownloadBook(di);
        }
    }

    private void DownloadPic(Dictionary<string, string> di) {
        new PicDownload(new Uri(downloadInfo["urlPic"]), downloadInfo["fileDestPartOne"] + "png");
    }

    private void DownloadBookAsync(Dictionary<string, string> downloadInfo) {
        new BookDownload(new Uri(downloadInfo["urlVersion"]), downloadInfo["fileDestPartOne"] + "ouf");
    }

public PicDownload(...){
    webClientPic.DownloadFileAsync(uri, destination);
}
public FileDownload(...){
    webClientPic.DownloadFileAsync(uri, destination);
}

0 ответов

Другие вопросы по тегам