VS 2008 SP1
J'utilise la fonction DownloadStringAysnc. Mais l'événement ProgressChanged n'affiche la progression qu'après le téléchargement de la chaîne.
Même lorsque j'essaie de télécharger une chaîne de caractères contenue dans un gros fichier. Le programme reste en réponse, donc je sais qu'il fait quelque chose. Cependant, c'est lorsque la progression est terminée que l'événement progressChanged se déclenche.
Je sais que cela est dû au fait que le progressChanged et le DownloadStringCompleted se déclenchent immédiatement l'un après l'autre. Cependant, il devrait y avoir une pause car le fichier est assez volumineux.
Voici l'extrait de code que j'utilise actuellement. Et le résultat ci-dessous. Ce qui est étrange, c'est que e.progresspercentage est à 100%. Et semble être appelé deux fois.
Merci beaucoup pour tout conseil,
Output in the progress changed event
Progress changed Version userstate: [ Version1 ]
progressBar1.Value [ 100 ]
Progress changed Version userstate: [ Version1 ]
progressBar1.Value [ 100 ]
Completed Version userstate: [ Version1 ]
private void UpdateAvailable()
{
WebClient wbCheckUpdates = new WebClient();
wbCheckUpdates.DownloadProgressChanged += new DownloadProgressChangedEventHandler(wbCheckUpdates_DownloadProgressChanged);
wbCheckUpdates.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wbCheckUpdates_DownloadStringCompleted);
DownloadFiles df = new DownloadFiles();
string webServerURL = df.webServerPath;
wbCheckUpdates.DownloadStringAsync(new Uri(Path.Combine(webServerURL, "version.txt")), "Version1");
}
void wbCheckUpdates_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
Console.WriteLine("Progress version changed userstate: [ " + e.UserState + " ]");
progressBar1.Value = e.ProgressPercentage;
Console.WriteLine("progressBar1.Value [ " + this.progressBar1.Value + " ]");
}
void wbCheckUpdates_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
Console.WriteLine("Completed version userstate: [ " + e.UserState + " ]");
}
\=========== Modifié en utilisant DownloadDataAysnc ===============
wbCheckUpdates.DownloadDataAsync(new Uri(Path.Combine(webServerURL, "version.txt")), "Version1");
void wbCheckUpdates_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
{
byte[] result = e.Result;
Console.WriteLine("Completed data: [ " + System.Text.ASCIIEncoding.Default.GetString(result) + " ]");
}
Les résultats sont les mêmes :
Progress changed Version userstate: [ Version1 ]
progressBar1.Value [ 100 ]
Progress changed Version userstate: [ Version1 ]
progressBar1.Value [ 100 ]
Completed data: [ 1.0.11 ]