Загрузите несколько файлов в асинхронном режиме и дождитесь завершения всех файлов, прежде чем выполнять оставшуюся часть кода.

Я пытаюсь загрузить несколько файлов из интернета и жду, пока все они закончат. Это консольное приложение C #, которое я запускаю, поэтому обработчик событий индикатора выполнения не требуется. Однако в настоящее время он просто продолжает выполнять код, хотя все файлы не были загружены.

1. Скачивание всех файлов!2. Закончено Скачать файл А3.Finished Загрузка всех файлов!4.Finished Загрузка файла B5. Закончена загрузка файла C

Как бы вы ожидали, пока все асинхронные файлы загрузки не будут закончены.

 private void DownloadMultipleFiles(List doclist)
    {
        foreach(var value in doclist){
            try
            {
                using (WebClient webClient = new WebClient())
                {
                    string downloadToDirectory = @Resources.defaultDirectory + value.docName;
                    webClient.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
                    webClient.DownloadFileCompleted += client_DownloadFileCompleted;
                    webClient.DownloadFileAsync(new Uri(value.docUrl), @downloadToDirectory);

                    //Add them to the local
                    Context.listOfLocalDirectories.Add(downloadToDirectory);
                }         
            }
            catch (Exception)
            {
                Errors.printError("Failed to download File: " + value.docName);
            }
        }
    }

Ответы на вопрос(1)

Ваш ответ на вопрос