2010-04-09 116 views
0

我有一些代码,启动一个后台进程在我的WPF应用程序搜索:WPF BackgroundWorker过程RunWorkerCompleted被多次调用,为什么?

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

RunSearch从button_click事件exicuted。

我在我的SearchFinished方法中显示“找不到结果”的消息框。由于某些原因,SearchFinished方法有时会多次调用,这会导致显示多个MessageBoxes。有没有解决方法?

+0

“多次”多少次? – ChrisF 2010-04-09 15:07:38

+1

看起来答案可能在这里 http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/7724ac95-a138-48ef-a208-dea0a566ada3 – 2010-04-09 15:08:19

+0

它每次增加1按下按钮,这实际上有意义 – 2010-04-09 15:11:42

回答

2

把这张贴了一下就把枪冲了出来。

由于我在点击按钮时连接事件,每次单击按钮时,事件执行的次数都会增加。我把线路移到了构造函数中,我的问题就解决了。

+0

多次被这个[形象]错误咬伤。像这样的情况下,它有助于进行一些日志记录 - 例如,您可能已经注意到执行次数和按钮点击之间的直接关系;) – 2010-04-09 15:14:24

相关问题