Sto provando a scaricare più file da Internet e attendo che tutti finiscano. Questa è un'applicazione di console C# in cui sono in esecuzione, quindi nessun gestore di eventi della barra di avanzamento dovrebbe essere necessario. Tuttavia, al momento, continua a eseguire codice anche se tutti i file non sono stati scaricati.Scaricare più file asincroni e attendere che tutti terminino prima di eseguire il resto del codice
- 1.Download di tutti i file!
- 2.Finito Download File A
- 3.Finitura Download di tutti i file!
- 4.Finished download di file B
- 5.Finished Il download del file C
Come ti aspettano fino a che tutti i file di download asincrono sono finiti.
private void DownloadMultipleFiles(List<DocumentObject> 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);
}
}
}
Grazie per l'avviso. Assicurati che le mie localDirectories siano thread-safe aggiunga anche il mio gestore di eventi di completamento. Grazie per tutto l'aiuto. Questo mi ha anche aiutato a capire i problemi con gli altri miei compiti asincroni. – user2100493
Disponibile dal 4.5 – Natxo
L'eccezione non riesce a scaricare il file viene generato se l'URL che tenta di essere scaricato restituisce un 404 non trovato? –