Bonjour tout le monde,
j'ai besoin de faire une fenêtre (winform) dans laquelle:
1/ un contrôle est modifié par un thread.
2/ ma fenêtre (celle qui contient le contrôle) doit être accessible par l'utilisateur en même temps que le thread modifie un de ses contrôle.
Alors, pour tenter d'y voir plus clair, je me suis inspiré de ce tuto, et en particulier ce chapitre.
Je suis arrivé à un problème trés simple et trés concret:
Une form (form1) avec un bouton "start" et une ProgressBar. Quand je clique sur "start", j'ai un Thread qui se lance et qui incrémente progressivement la ProgressBar. J'ai fait une classe qui s'occupe du thread et qui ressemble à ça:
Jusqu'ici tout va bien sauf que, dès que mon thread est lancé, et jusqu'à ce qu'il soit achevé, je n'ai plus la main sur ma form1 (je voudrais, notamment, la déplacer).
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
26
27
28
29
30
31
32
33
34
35
36 class ProgressThread { private ProgressBar _pbar; private Form _mainWin; private delegate void InvokeMethod(); public ProgressThread(Form mainWin, ProgressBar pbar) { _pbar = pbar; _mainWin = mainWin; _pbar.Minimum = 0; _pbar.Maximum = 100; _pbar.Step = 1; } public void Start() { Thread theThread = new Thread(new ThreadStart(TheThread)); theThread.Start(); } private void TheThread() { _mainWin.BeginInvoke(new InvokeMethod(UpdatePBar)); } private void UpdatePBar() { while (_pbar.Value < 100) { _pbar.PerformStep(); Thread.Sleep(50); } } }
¿Auriez-vous une idée?
Partager