Bonjour,

je réalise une application qui utilise des threads pour réaliser de gros traitements de données. j'utilise le composant backgroundWorker.

un de mes traitements ne fonctionne pas car il y a une exception m'indiquant une opération inter-thread interdite. cette exception est présente sur l'accès à une ListBox mais à travers un delegate, donc en théorie pas de soucis. dans mon autre thread qui fonctionne j'accède à des ListView sans soucis.

voici le code incriminé :

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
private delegate ListBox.SelectedObjectCollection DGetLbColonnes();
        private ListBox.SelectedObjectCollection GetLbColonnes()
        {
            ListBox lb = lbColonnes;
            return lb.SelectedItems;
        }
 
        private void bwExporter_DoWork(object sender, DoWorkEventArgs e)
        {
            List<string> colTab = new List<string>();
            IAsyncResult ias = this.BeginInvoke(new DGetLbColonnes(GetLbColonnes));
            ListBox.SelectedObjectCollection lbc = (ListBox.SelectedObjectCollection)this.EndInvoke(ias);
            foreach (Object v in lbc)
            {
                colTab.Add(v.ToString());
                MessageBox.Show(v.ToString());
            }
        }
si vous avez une idée, merci de m'aider