J'ai une application qui télécharge des fichiers sur le serveur à l'aide du client Web. Je voudrais afficher une barre de progression pendant le téléchargement du fichier. Comment pourrais-je y parvenir?Progression du téléchargement lors du téléchargement de fichier à l'aide de Webclient.Uploadfile
13
A
Répondre
18
WebClient.UploadFileAsync vous permettra de le faire.
WebClient webClient = new WebClient();
webClient.UploadFileAsync(address, fileName);
webClient.UploadProgressChanged += WebClientUploadProgressChanged;
...
void WebClientUploadProgressChanged(object sender, UploadProgressChangedEventArgs e)
{
Console.WriteLine("Upload {0}% complete. ", e.ProgressPercentage);
}
Notez que le fil ne bloque pas le chargement plus, je vous recommande d'utiliser:
webClient.UploadFileCompleted += WebClientUploadCompleted;
...
void WebClientUploadCompleted(object sender, UploadFileCompletedEventArgs e)
{
// The upload is finished, clean up
}
2
Ajoutez votre gestionnaire d'événements à WebClient.UploadProgressChanged et appelez WebClient.UploadFileAsync.
Voir la documentation WebClient.UploadProgressChanged pour un exemple.
Merci. Je travaille avec le multithreading, le téléchargement de fichier est déjà exécuté sur un thread différent. Donc devrais-je simplement utiliser la méthode Uploadfile ou la méthode UploadfileAsync? –
Vous aurez toujours besoin de UploadFileAsync J'ai bien peur que le thread bloquera un appel à UploadFile pour que ces événements ne soient jamais appelés. Vous pouvez recréer votre propre blocage en définissant un indicateur booléen lorsque vous lancez le téléchargement, le réinitialiser dans uploadcomplete, puis thread.sleep jusqu'à ce que le drapeau soit effacé. –
note: l'événement '' 'UploadProgressChanged''' ne fonctionne pas correctement avec la méthode' '' UploadDataAsync''' –