Bonjour @ tous,

Je me met au parallélisme, et j'ai un traitement en winform qui charge des feuilles Excel dans des Hashtable.
L'opération se fait plusieurs fois, j'ai donc décidé d'utiliser le parallélisme.
Du coup, il me faut une progressBar par traitement. J'ai donc décidé (pour tester) de les empiler dans un composant texte qui prends une bonne partie de mon interface.
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
            Hashtable htUd = null;
            Hashtable htCpm = null;
            Hashtable htItem = null;
            Hashtable htSpm = null;
            Hashtable htSol = null;
            Hashtable htEIPC = null;
            Hashtable htSbA = null;
            Hashtable htSbB = null;
            Parallel.Invoke(
                () => { htUd = GetListe(txtFicXlsUd.Text, txtXlsFllUd.Text, txtXlsRefUD.Text, txtXlsLibUD.Text, txtXlsLn1UD.Text, "Lecture de la liste 1"); },
                () => { htCpm = GetListe(txtFicXlsCPM.Text, txtXlsFllCPM.Text, txtXlsRefCPM.Text, txtXlsLibCPM.Text, txtXlsLn1CPM.Text, "Lecture de la liste 2"); },
                () => { htItem = GetListe(txtFicXlsITEM.Text, txtXlsFllITEM.Text, txtXlsRefITEM.Text, txtXlsLibITEM.Text, txtXlsLn1ITEM.Text, "Lecture de la liste 3"); },
                () => { htSpm = GetListe(txtFicXlsSPM.Text, txtXlsFllSPM.Text, txtXlsRefSPM.Text, txtXlsLibSPM.Text, txtXlsLn1SPM.Text, "Lecture de la liste des 4"); },
                () => { htSol = GetListe(txtFicXlsSOL.Text, txtXlsFllSOL.Text, txtXlsRefSOL.Text, txtXlsLibSOL.Text, txtXlsLn1SOL.Text, "Lecture de la liste des 5"); },
                () => { htEIPC = GetListe(txtFicXlsEIPCA.Text, txtXlsFllEIPCA.Text, txtXlsRefEIPCA.Text, txtXlsLibEIPCA.Text, txtXlsLn1EIPCA.Text, "Lecture de la liste 6"); },
                () => { htSbA = GetListe(txtFicXlsSBA.Text, txtXlsFllSBA.Text, txtXlsRefSBA.Text, txtXlsLibSBA.Text, txtXlsLn1SBA.Text, "Lecture de la liste des 7"); },
                () => { htSbB = GetListe(txtFicXlsSBB.Text, txtXlsFllSBB.Text, txtXlsRefSBB.Text, txtXlsLibSBB.Text, txtXlsLn1SBB.Text, "Lecture de la liste des 8"); }
            ); // */
 
        private Hashtable GetListe(string ficXls, string xlsFeuille, string xlsColId, string xlsColLib, string xlsLigne1, string texte, string regexId="") {
            Hashtable ret = new Hashtable();
            int tmp = 0;
            if (!string.IsNullOrEmpty(ficXls.Trim()) && (File.Exists(ficXls)) && (int.TryParse(xlsLigne1, out tmp))) {
                UtilsExcel ue = new UtilsExcel();
                tssLabel.Text = texte;
                ProgressBar pb = new ProgressBar();
                pb.Name = Guid.NewGuid().ToString();
                if (txtInfos.InvokeRequired) { // Gérer les accès concurentiels.
                    txtInfos.Invoke(new AddControl(CtlAddControl), txtInfos, pb);
                } else
                    pb.Parent = txtInfos;
                Application.DoEvents();
                pb.Dock = DockStyle.Top;
                pb.BringToFront(); // */
                ret = ue.GetListe(ficXls, xlsFeuille, xlsColId, xlsColLib, tmp, ref pb, regexId); //tssPbMain
                pb.Dispose();
                if (string.IsNullOrEmpty(ue.msgErr)) {
                    txtInfos.Text += "OK. " + tssLabel.Text + ". " + ret.Count + " éléments intégrés." + Environment.NewLine + ue.msgInfo;
                } else
                    txtInfos.Text += "KO. " + tssLabel.Text + ". " + ue.msgErr + Environment.NewLine;
            } // */
            return ret;
        }
 
        private delegate void AddControl(Control ctlParent, Control ctlEnfant); // Modèle de fonction (prototype) pour l'instanciation.
        private static void CtlAddControl(Control ctlParent, Control ctlEnfant) {
            Application.DoEvents();
            ctlEnfant.Parent = ctlParent;
        }
Seulement, ça ne fonctionne pas (si je suis en synchrone, ça fonctionne).
Les progressbar n'apparaissent pas... Je ne vois même pas Excel se lancer.

Qu'est ce que je n'ai pas fait comme il faut ?

[EDIT] : En fait, il fait bien toutes les actions, mais il doit bloquer quelque part car je vois tous les libellés passer, mais le traitement ne se termine jamais.

Merci d'avance.