自己做了一个检索文件的小工具,但是经常重复处理在DoWork中检索文件,找到文件就将文件路径写入一个全局变量,发送_backgroundWorker1.ReportProgress(i * 100 / arrText.Count)消息,其中i为文件数目,在backgroundWorker1_ProgressChanged中通知将文件路径显示在界面上,但是不知道为什么,经常出现重复显示同一个文件。
在DoWork中和ProgressChanged中全局变量有时不一致,ProgressChanged中还是上次的内容,没有改变,是不是backgroundWorker使用两个线程处理啊?我该怎么办啊? 

解决方案 »

  1.   

    确保在 DoWork 事件处理程序中不操作任何用户界面对象。而应该通过 ProgressChanged 和 
    RunWorkerCompleted 事件与用户界面进行通信。
    BackgroundWorker
      

  2.   

    DoWork 事件处理程序中是不操作任何用户界面对象的,只是更改了一个全局的字符串,在ProgressChanged里面处理字符串啊
      

  3.   

    BackgroundWorker是开了新线程
    DoWork方法中加个lock试试
      

  4.   

    需要处理的数据使用voliate进行标示看看