Ich versuche mehrere Dateien aus dem Internet herunterzuladen und erwarte, dass alle fertig sind. Dies ist eine C# -Konsolenanwendung, die ich ausführe, daher sollte kein Fortschrittsbalken-Ereignishandler erforderlich sein. Zur Zeit wird jedoch weiterhin Code ausgeführt, obwohl nicht alle Dateien heruntergeladen wurden.Laden Sie mehrere Dateien asynchron herunter und warten Sie, bis alle fertig sind, bevor Sie den Rest des Codes ausführen.
- 1.Download aller Dateien!
- 2.Finished Download Datei A
- 3.Finished Herunterladen aller Dateien!
- 4.Finished Herunterladen Datei B
- 5.Finished Herunterladen Datei C
Wie würden Sie warten, bis alle Asynchron-Download-Dateien fertig sind.
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);
}
}
}
Vielen Dank für den Kopf. Stellen Sie sicher, dass meine localDirectories threadsicher ist, fügte auch meinen eigenen Event-Handler hinzu. Danke für die Hilfe. Dies half mir auch, die Probleme mit meinen anderen asynchronen Aufgaben zu verstehen. – user2100493
Dies ist seit 4.5 verfügbar. – Natxo
Wird die Ausnahme zum Herunterladen der Datei fehlgeschlagen, wenn die URL, von der versucht wird, heruntergeladen zu werden, 404 not Found? –