Одновременная и не одновременная загрузка: асинхронная и ожидающая в 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);
}