2010-04-09 3 views
0

J'ai un code qui commence un processus d'arrière-plan pour la recherche dans mon application WPF:WPF BackgroundWorker RunWorkerCompleted est appelé plusieurs fois, pourquoi?

private void RunSearch(SearchArguments arguments) 
    { 
     _getSearchResults.DoWork += GetSarchFromDb; 
     _getSearchResults.RunWorkerCompleted += SearchFinished; 
     _getSearchResults.RunWorkerAsync(arguments); 
    } 

RunSearch est exicuted de l'événement de Button_Click.

J'ai une boîte de message dans ma méthode SearchFinished qui montre "No Results Found". Pour une raison quelconque, la méthode SearchFinished est parfois appelée plusieurs fois, ce qui entraîne l'affichage de plusieurs MessageBox. Y at-il une solution de contournement pour cela?

+0

Combien de fois est "plusieurs fois"? – ChrisF

+1

On dirait que la réponse peut être ici http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/7724ac95-a138-48ef-a208-dea0a566ada3 –

+0

Il monte de 1 chaque fois que je appuyez sur le bouton, cela fait sens –

Répondre

2

A précipité le pistolet avec l'affichage un peu.

Depuis que je suis en train de câbler les événements sur un clic de bouton, chaque fois que je clique sur le bouton, le nombre de fois que l'événement s'exécute augmente. J'ai déplacé le fil au constructeur, et mon problème a été résolu.

+0

été mordu par ce bug [figuratif] plusieurs fois moi-même. des cas comme ceux-ci, il est utile d'avoir une certaine journalisation - par exemple, vous avez peut-être remarqué un lien direct entre le nombre d'exécutions et les clics sur les boutons un peu plus tôt;) –

Questions connexes