[英]C# DownloadSync event not fired
試用WebClient.DownloadFileAsync:
public void DownloadFile(string fileUrl, string localFile)
{
using (WebClient client = new WebClient())
{
downloadingFile = true;
client.DownloadFileCompleted += client_DownloadFileCompleted;
client.DownloadFileAsync(new Uri(fileUrl), localFile);
while (downloadingFile) { };
}
}
private void client_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
downloadingFile = false;
}
問題是,從不觸發DownloadFileCompleted事件,所以我從未設置downloadingFile = false => while循環永遠不會結束。
對出什么問題有任何想法嗎?
謝謝!
您必須從事件處理程序(Client_DownloadFileCompleted)返回類型為AsyncCompletedEventHandler的實例,並且不能為空。
有關更多詳細信息,請參見MSDN鏈接 。
這似乎是一個邏輯錯誤(有點死鎖的情況),因為您的主線程在某種情況下處於連續循環中,即使下載完成也永遠沒有時間引發事件。
解決方案1:刪除while(downloadingFile){}; 釋放主線程的行,如果要保留控制流,則可以使方法DownloadFile異步,並使用以下代碼行來等待DownloadFile方法的各種形式。
await client.DownloadFileTaskAsync(new Uri(fileUrl), localFile);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.