fichier téléchargé à l'aide webclient.DownloadFileAsync a 0KB
-
27-10-2019 - |
Question
Je suis en train de télécharger zend-cadre (
La solution Juste je pense: vous pouvez peut-être essayer de garder l'instance WebClient dans un endroit ne serait pas des ordures collectées. Lorsque l'événement DownloadFileCompleted tiré, vous nettoyez juste la référence à l'instance WebClient et laissez GC pour récupérer la mémoire plus tard (et ne pas oublier d'appeler méthode Dispose).
Autres conseils
Ok, j'ai trouvé finnaly la réponse! Avant de télécharger le fichier, je vérifiais sa taille en envoyant HttpWebRequest. Le problème était que je ne l'ai pas Close () la réponse.
Merci pour les réponses, ils étaient des indices agréables.
Essayez de gérer l'événement et DownloadProgressChanged
DownloadFileCompleted
.
private void button1_Click(object sender, EventArgs e)
{
string url = "http://framework.zend.com/releases/ZendFramework-1.11.11/ZendFramework-1.11.11.zip";
WebClient downloader = new WebClient();
downloader.DownloadFileCompleted += new AsyncCompletedEventHandler(downloader_DownloadFileCompleted);
downloader.DownloadProgressChanged += new DownloadProgressChangedEventHandler(downloader_DownloadProgressChanged);
downloader.DownloadFileAsync(new Uri(url), "C:\\temp.zip");
}
void downloader_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
label1.Text = e.BytesReceived + " " + e.ProgressPercentage;
}
void downloader_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
{
if (e.Error != null)
MessageBox.Show(e.Error.Message);
else
MessageBox.Show("Completed!!!");
}
Si vous avez UAC activé dans Windows « C: \ temp.zip » dans la ligne suivante ne parviendra pas à enregistrer le fichier parce que vous n'êtes pas autorisé à écrire en dehors des répertoires utilisateur sans autorisations élevées:
downloader.DownloadFileAsync(new Uri(url), "C:\\temp.zip");