Laden Sie mehrere Dateien async und warten Sie, bis alle von Ihnen zu beenden, bevor die Ausführung des restlichen Codes
Ich versuche mehrere Dateien herunterladen aus dem internet und erwarten für alle von Ihnen zu beenden. Dies ist eine C# - Konsolenanwendung, die ich verwende, also keine Fortschrittsanzeige event-handler erforderlich sein sollte. Allerdings ist es derzeit nur weiter, um code auszuführen, obwohl alle Dateien nicht heruntergeladen wurden.
- 1.Der Download aller Dateien!
- 2.Fertig Download-Datei Eine
- 3.Das Herunterladen abgeschlossen ist, alle Dateien!
- 4.Nach Dem Herunterladen Die Datei B
- 5.Nach Dem Herunterladen Die Datei C
Wie würden Sie erwarten, bis alle asynchronen download-Dateien sind fertig.
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);
}
}
}
InformationsquelleAutor user2100493 | 2013-05-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
DownloadFileAsync
/DownloadFileCompleted
MitgliederWebClient
verwenden Sie die Event-based Asynchronous Pattern. Wenn Sie verwenden möchtenasync
undawait
Sie sollten mit den Task-based Asynchronous Pattern.In diesem Fall sollten Sie die
DownloadFileTaskAsync
Mitglied, die als solche:Bitte beachten Sie, dass Ihre
Context.listOfLocalDirectories.Add
undErrors.printError
Methoden sollte threadsicher sind.Das ist seit der 4.5
Gilt die Ausnahme Fehler beim herunterladen der Datei ausgegeben, wenn die URL, die versucht, heruntergeladen werden einen 404 not Found zurückgibt?
Ich glaube schon, ja.
WebClient
wird eine Ausnahme ausgelöst, für alle nicht-Erfolg response code.InformationsquelleAutor Stephen Cleary