2016-06-20 52 views
0

如何按順序下載多個文件?例如:我在json上有3個文件,我想下載第一個文件,第二個文件和第三個文件。因爲在我的代碼中,文件同時下載,因此預先完成較小的文件大小(因此文件不是按順序)。 我有一個問題,如何直接克服該文件(無延遲時間)?因爲當你使用此代碼,再有就是幾秒鐘的延遲時間來下載的第一個文件下一個文件中的一個包)從JSON下載多個文件

我的項目:Project

+5

請在你的問題中發佈任何相關的代碼。很少有人會願意去一個非堆棧溢出頁面,更不用說下載並解壓縮一個zip文件,並試圖在你的項目中搜索你正在談論的內容。請閱讀[簡短,自包含,正確的示例](http://sscce.org/)。 – Amadan

+0

您可以下載不同步但不同步的文件,以確保哪些下載將在第一秒完成。 – GeralexGR

+0

@ Jerrak0s:您的意思是:您可以下載文件而非異步但同步確定哪些下載將在第一秒完成等等?可以給我的代碼或樣本? – Rose

回答

0

這個什麼同步下載?

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

我會說,我認爲,試圖強行完成順序是非常糟糕的主意。它可能會暗示代碼不能正確處理同步操作,並會使應用程序響應速度變慢。但是,如果你想繼續下去,我認爲這是一個不可取的途徑,你可以直到你的上一次下載完成才能開始下一次下載。一個例子:

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); 
} 

你可能沒有使用下載管理器,但別的東西。同樣的概念應該適用。在上面我開始下載一個文件,當它完成時,下一個文件開始