J'ai une boucle qui lit beaucoup de données à partir 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 fantaisistes, j'ai donc choisi de représenter la progression dans une étiquette qui dira "Step 1/1000", puis passera à "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 reste "bloqué" et la progression n'est pas indiquée. Je comprends ce comportement grâce à 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 certaine forme de repeindre/rafraîchir, ou forçant la fenêtre/application à traiter sa file d'attente de messages.
Quelle est la bonne façon de le faire en C# ? Je ne suis pas lié à l'étiquette, donc s'il y a un simple écran popup de barre de progression que je pourrais utiliser à la place de cette étiquette, ce serait également génial...
Merci