Comment mettre à jour une zone de liste par un appel asynchrone?

J'ai développé un windows forms application en c#, je veux juste mettre à jour des éléments d'une liste dans le formulaire principal par spin prépare un autre thread sans blocage de l'interface graphique de formulaire.
Etant donné que les threads ne peuvent pas accéder à la forme des entités telles que les listbox, j'ai pensé à l'utilisation de délégués.
Code suivant dans le ci-dessous montre comment j'ai utilisé un délégué à le faire tâche, mais elle bloque l'interface graphique de formulaire. donc, je veux juste de les convertir en asynchrone délégué des mises à jour de zone de liste sans blocage de l'interface graphique de Formulaire

délégué déclaration

 delegate void monitoringServiceDel();

appelant le délégué

new monitoringServiceDel(monitoringService).BeginInvoke(null, null);

délégué de la méthode de la mise en œuvre

private void monitoringService()
{
        this.listEvents.Invoke(new MethodInvoker(delegate()
        {
            int i = 0 ;
            while (i<50)
            {

                listEvents.Items.Add("count :" + count++);
                Thread.Sleep(1000);
                i ++;
            }

        }));


}

OriginalL'auteur Tharik Kanaka | 2012-04-04