BackgroundWorker Renvoyer Une Valeur?

Le code suivant ajoute les nombres de 1 à 100 et renvoie la somme. Ce que j'essaie de faire est de lancer les calculs dans un backgroundworker et de retourner une valeur. Le problème, c'est que returnValue est retourné avant DoWork complète. Comment puis-je attendre mon fond travailleur à remplir avant de retourner une valeur? (Je n'arrive pas à mettre le retour dans mon DoWork...)

double returnValue = 0;

var b = new BackgroundWorker();
b.DoWork += new DoWorkEventHandler(
    delegate(object sender, DoWorkEventArgs e) {
        for(int i=0;i<100;i++){
            returnValue += (i+1);
        }
    }
);

b.RunWorkerAsync();
return returnValue;

Addendum: il Serait mieux d'envoyer un message de la pompe sur le même thread au lieu de l'exécution de cette, dans un contexte de travail?

Aussi, c'est juste un exemple de code, mon code actuel prend plus d'une minute pour terminer.

Presque la même question que stackoverflow.com/questions/939635/...
Possible en double stackoverflow.com/questions/5182782/...
Ce que vous demandez de faire n'a pas de sens; vous essayez d'exécuter du code sur la BackgroundWorker, mais vous voulez aussi de bloquer l'appel de la méthode de retour jusqu'à ce que le BackgroundWorker est fait.

OriginalL'auteur sooprise | 2011-03-07