Bonjour à tous,

Au démarrage de mon application je charge des paramètres dans une base de données. Ce chargement prends un certain temps et mon application freeze +-1min.

J'aimerai afficher une progressBar afin de faire patienter l'utilisateur.

Pouvez-vous m'expliquer le principe ?

Merci d'avance,

Voici mon code.

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
55
56
57
58
59
60
61
62
63
64
65
66
67
private void LoadModelCodeInDB()
        {
            int flag, NbrModelCode;
 
            flag = 0;
            NbrModelCode = 0;
 
            lectureFichier(FichierConfig);
 
            // On ajoute tout les testeurs
            foreach (DataRow row in maTable.Rows) // Loop over the rows.
            {
                foreach (string item in row.ItemArray) // Loop over the items.
                {
                    if (item == "[TESTER]")
                    {
                        flag = 1;
                    }
                    if (item == "[/TESTER]")
                    {
                        flag = 0;
                    }
 
                    if (flag == 1 && item != "[TESTER]")
                    {
                        TreeNode treeNode = new TreeNode(item);
                        treeView1.Nodes.Add(treeNode);
                    }
                }
            }
 
            // On ajoute tous les modeles codes
            foreach (TreeNode Tester in treeView1.Nodes)
            {
                using (var db = new DataClasses1DataContext())
                {
                    try
                    {
                        var md = (from m in db.vwModelOptionsSmall2s
                                  orderby m.Project, m.ModelCode
                                  select m);
 
                        NbrModelCode = md.Count();
                        progressBar1.Maximum = NbrModelCode;
                        progressBar1.Value = 0;
                        int i =0;
 
                        foreach (var m in md)
                        {
                            i++;
                            TreeNodeCollection parentNode;
                            if (Tester.Nodes.ContainsKey(m.Project))
                                parentNode = Tester.Nodes[m.Project].Nodes;
                            else
                                parentNode = Tester.Nodes.Add(m.Project, m.Project).Nodes;
 
                            parentNode.Add(m.ModelCode);
                            progressBar1.Value = i;
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
            }
        }