Je travaille en C# et WPF, très nouveau pour les deux.Comment afficher la progression pendant une boucle occupée?
J'ai une boucle qui lit beaucoup de données d'une source externe. Le processus prend environ 20 secondes, et je veux montrer la progression à l'utilisateur. Je n'ai pas besoin de barres de progression fantaisie, j'ai donc choisi de tracer ma progression dans une étiquette qui dira "Step 1/1000", puis passer à "Step 2/1000" etc.
Mon code ressemble à quelque chose comme ceci:
// "count" is the number of steps in the loop,
// I receive it in previous code
String countLabel = "/"+count.ToString();
for (i = 0; i < count; i++)
{
... do analysis ...
labelProgress.Content = "Step "+i.ToString()+countLabel
}
Cependant, au cours de cette analyse, l'écran est « bloqué » et les progrès ne montre pas avancer. Je comprends ce comportement de mon passé en C++, où j'aurais probablement un thread séparé montrant une barre de progression recevant des notifications de la boucle, ou une forme de repeindre/rafraîchir, ou forçant la fenêtre/application à traiter sa file de messages.
Quelle est la bonne façon de le faire en C#? Je ne suis pas attaché à l'étiquette, donc s'il y a un écran simple pop-up progrès-bar que je pouvais utiliser au lieu de ce label, il serait aussi grand ...
Merci
Cela peut être l'aide pour vous , ** 100% testé ** http://stackoverflow.com/a/42995210/6863414 –