SelonWebClient.OpenFileAsync feu DownloadProgressChanged
http://msdn.microsoft.com/en-us/library/system.net.webclient.downloadprogresschanged.aspx,
OpenFileAsync aurait dû DownloadProgressChanged tir chaque fois qu'il fait des progrès.
Je ne peux pas le tirer du tout. Fires bien avec DownloadDataAsync et DownloadFileAsync à la place cependant.
Voici un exemple simple:
using System;
using System.Net;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
WebClient client = new WebClient();
client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_OpenReadCompleted);
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
client.OpenReadAsync(new Uri("http://www.stackoverflow.com"));
Console.ReadKey();
}
static void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
Console.WriteLine("{0}% Downloaded", e.ProgressPercentage);
}
static void client_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
Console.WriteLine("Open Read Completed");
}
}
}
Pour moi, l'événement DownloadProgressChanged ne se déclenche jamais, bien que le changement de DownloadFileAsync ou DownloadDataAsync et il le fait.
J'ai effectivement des résultats différents (avec .Net4). Avec mes tests, DownloadProgressChanged se déclenche parfaitement lors de l'utilisation de DownloadDataAsync(). Mais si j'essaie d'utiliser DownloadFileAsync(), il ne se déclenchera pas du tout! :/ –
Dans le cas où quelqu'un d'autre se heurte à cela, DownloadFileAsync() renvoie void donc il n'y a aucun moyen de savoir si elle se heurte à une erreur autant que je peux dire. Dans mon cas, je n'ai pas créé le répertoire où je téléchargeais. Cela a provoqué l'erreur de la méthode et n'a déclenché aucun des événements. Après avoir créé le dossier de téléchargement où mon fichier était en cours de téléchargement, cela fonctionne comme prévu. –