2009-01-12 7 views
1

J'essaie d'utiliser un Thread dans une winform simple. J'ai un ListBox que je veux remplir avec des nombres à la méthode de chargement du formulaire. Je ne veux pas attendre jusqu'à ce qu'il soit rempli. J'utilise quelque chose comme ceci:Thread ListBox C# SharpDevelop

void fillList() 
     { 

      Invoke(new MethodInvoker(
       delegate 
       { 
        while(true) 
        { 
         i++; 
         listBox1.Items.Add(i); 
         if(i == 4000) 
         break; 


        }  
       })); 

     } 

Puis à la méthode Load je fais ceci:

Thread tr = new Thread(fillList()); 
tr.Start(); 

Pourquoi il ne fonctionne pas?

Je reçois cette erreur: Nom de la méthode prévue (CS0149)

Merci.

Répondre

2
Thread tr = new Thread(fillList); 
3

Invoke suffit d'exécuter ce qui précède retour sur le thread d'interface utilisateur qui est déjà le cas si vous appelez cela de la charge de forme, de sorte que votre interface utilisateur se tiendra toujours pendant que vous remplissez la liste.

Dans l'exemple ci-dessus, vous n'avez probablement pas besoin d'un nouveau thread, créez simplement un tableau, remplissez-le puis effectuez une AddRange au lieu de l'Add. L'ajout provoque une actualisation à chaque fois et c'est ce qui ralentit votre charge. Avec AddRange, l'actualisation n'aura lieu qu'une seule fois.

Questions connexes