2017-07-30 78 views
-1

我的代碼如下所示:DownloadFileAsync下載一個0KB文件

private static WebClient wc = new WebClient; 
... 
wc.DownloadFileAsync(URL, FilePath); 
wc.DownloadProgressChanged += (s, ev) => 
{ 
    //Do stuff 
}; 
wc.DownloadFileCompleted += (s, ev) => 
{ 
    //All the rest of the code 
}; 

然而,一旦DownloadFileAsync被執行時,該程序立即關閉留下我一個0KB文件下載的文件,而不是(沒有發生錯誤) 。 我相信它完全忽略了DownloadProgressChanged並執行括號內的代碼。我只是假設

+0

您需要顯示更多的代碼來調用DownloadFileAsync。您的程序可能會在下載完成之前結束。因爲這是一個控制檯應用程序,所以很可能只需將其更改爲普通的'DownloadFile'並在下載文件調用後將代碼移動到'DownloadFileCompleted'中即可。 –

回答

0

正如Scott Chamberlain正確指出的那樣,您的程序在DownloadFileCompleted被調用之前似乎已結束。如果這個假設是正確的,在主線程中等待,直到如此:

var completed = new AutoResetEvent(false); 
wc.DownloadFileAsync(URL, FilePath); 
wc.DownloadProgressChanged += (s, ev) => 
{ 
    //Do stuff 
}; 
wc.DownloadFileCompleted += (s, ev) => 
{ 
    //All the rest of the code 
    completed.Set(); 
}; 
completed.WaitOne(); 
+0

呃。現在我明白爲什麼它不起作用。 – user8390205