Bonjour
J'ai dans mon appli une tâche assez lourde lancée lorsque l'on appuie sur un bouton.
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 private void commencer_Click_1(object sender, EventArgs e) { ... speechRecognitionEngine.LoadGrammar(magrammaire); ... }
Cette tâche est "brute de décoffrage" : pas moyen de suivre son évolution, pas moyen d'en extraire un quelconque évenement, ni de la scinder en plusieurs partie. Elle dure environ 5 secondes (mais peu importe).
Pour spécifier à l'utilisateur que la tâche est en cours, j'ai pensé à mettre en place une progressbar (en suivant ce tutoriel) :
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 private void LanceThreadProgress() { if (progressbarCharg.InvokeRequired) { progressbarCharg.Invoke(new progressbarChargInvokeHandler(Progress)); } else Progress(); } private delegate void progressbarChargInvokeHandler(); private void Progress() { while (progressbarCharg.Value < progressbarCharg.Maximum) progressbarCharg.Value++; } private void commencer_Click_1(object sender, EventArgs e) { thrProgress = new Thread(new ThreadStart(LanceThreadProgress)); thrProgress.Start(); speechRecognitionEngine.LoadGrammar(magrammaire); ... }
Pour l'instant, je ne cherche pas à caler le step de la progessbar sur le temps réel de chargement. C'est un autre problème.
Le problème, c'est que dans tous les cas, l'incrémentation de la progressbar commence après le chargement de la grammaire, alors que mon thread est appelé avant.
Est-ce que j'utilise bien le thread ?
Existe-t-il un autre moyen de procéder ?
Partager