2016-06-20 11 views
0

Wie kann ich mehrere Dateien nacheinander herunterladen? Zum Beispiel: Ich habe 3 Dateien auf Json, ich möchte die erste Datei, zweite Datei und dritte Datei herunterladen. Da in meinem Code Dateien gleichzeitig heruntergeladen werden, wird also vorher eine kleinere Dateigröße erstellt (Dateien also nicht sequentiell). Und ich habe eine Frage, wie man diese Datei nacheinander (keine Verzögerungszeit) zu überwinden? Denn wenn Sie diesen Code verwenden, dann gibt es eine Verzögerungszeit von mehreren Sekunden auf die erste Datei mit der nächsten Datei in einem Bündel)Laden Sie mehrere Dateien in der Reihenfolge von JSON herunter

Mein Projekt zum Download: Project

+5

Bitte posten Sie alle relevanten Code innerhalb Ihrer Frage. Sehr wenige Leute werden bereit sein, auf eine Nicht-Stack-Overflow-Seite zu gehen, geschweige denn eine Zip-Datei herunterladen und entpacken und versuchen, in Ihrem Projekt herauszufinden, worüber Sie gerade sprechen. Bitte lesen Sie [kurze, eigenständige, korrekte Beispiele] (http://sscce.org/). – Amadan

+0

Sie können Dateien nicht asynchron, aber synchron herunterladen, um sicher zu sein, welcher Download zuerst abgeschlossen wird. – GeralexGR

+0

@ Jerrak0s: Was meinen Sie mit: Sie können Dateien nicht asynchron sondern synchron herunterladen, um sicher zu sein, welcher Download zuerst abgeschlossen wird etc? Kann mir der Code oder die Probe geben? – Rose

Antwort

0

Was diese synchron herunterladen?

var client = new System.Net.Http.HttpClient(); 
var result = client.GetStringAsync("url").Result; 
0

Ich werde sagen, dass ich glaube, dass ein Abschluss, um zu erzwingen versucht, ist eine wirklich schlechte Idee. Es kann auf Code hinweisen, der synchrone Vorgänge nicht richtig verarbeitet, und eine Anwendung langsamer/weniger reaktionsfähig macht. Wenn Sie jedoch weiter fortfahren möchten, was ich für einen unangemessenen Weg halte, können Sie Ihren nächsten Download erst beginnen, wenn Ihr vorheriger abgeschlossen ist. Ein Beispiel:

async void SynchronousDownload() 
{ 
    string[] filesToDownload = new string[] { 
     //enter your list of download URLS here 
    }; 
Queue<DownloadOperation> downloadOperationList = new Queue<DownloadOperation>(); 

BackgroundDownloader downloader = new BackgroundDownloader(); 

foreach(string fileURL in filesToDownload) 
{ 
    string fileName = fileURL.Substring(fileURL.LastIndexOf("/") + 1); 
    var newFile = await DownloadsFolder.CreateFileAsync(fileName, CreationCollisionOption.GenerateUniqueName); 

    var x = downloader.CreateDownload(new Uri(fileURL), newFile); 
    downloadOperationList.Enqueue(x);     
} 

do 
{ 
    DownloadOperation d = downloadOperationList.Dequeue(); 
    await d.StartAsync(); 
} while (downloadOperationList.Count > 0); 
} 

Wahrscheinlich verwenden Sie nicht den DownloadManager, sondern etwas anderes. Die gleichen Konzepte sollten gelten. Im obigen fange ich an, eine Datei herunterzuladen, und nach der Fertigstellung beginnt die nächste Datei.