Bonjour,
J'ai fait vite fait une classe pour afficher un Form avec un message d'attente.
Pour que ce Form s'affiche pendant qu'une opération se déroule, j'ai créé le Form depuis un Thread.
C'est simple, mais ça ne doit pas être correct de faire comme ça.
Code : 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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 public partial class WaitWindow : Form { static Thread _thd; static String _message; public static void Show(String message) { if (_thd != null) { Hide(); } _message = message; _thd = new Thread(new ThreadStart(threadProc)); _thd.Start(); } public static void Hide() { _thd.Abort(); } static void threadProc() { WaitWindow ww = new WaitWindow(); ww.label1.Text = _message; ww.Show(); ww.Refresh(); try { while (true) { ww.progressBar1.Value++; Thread.Sleep(100); } } catch (ThreadAbortException) { Debug.WriteLine("Aborted"); } catch (Exception ex) { Debug.WriteLine("Argh! "+ex.Message); } ww.Close(); ww = null; } protected WaitWindow() { InitializeComponent(); } }
J'utilise .Net2 et Windows Vista. Quand la fenêtre est affichée au bout de qlqs secondes Vista affiche dans le titre de la fenetre qu'elle ne "répond pas" et la fenêtre devient vide.
Selon mais vieux souvenir, c'est qu'il doit manquer qlqs chose comme une "pompe à messages" ...
Auriez vous une idée pour me corriger ?
Merci
Cyrille
Partager