本帖最后由 prestashop 于 2011-05-21 01:51:27 编辑

解决方案 »

  1.   

    DoWork中的代码是在后台线程上执行的,但RunWorkerCompleted应该是在窗体线程上执行的
      

  2.   

    问题在你的DoWork调用RetrieveListViewData方法时,方法里的Thread.Sleep暂停的时间大于worker.reportProgress的时间。导致在线程挂起时,已经触发了ProgressChanged事件。
    所以说,DoWork要放到后台现成上去。你可以把Thread.Sleep(1)试试,重复的项目会更多。所以DoWork这个方法,本来就是开辟一个线程来执行耗时的操作,所以可以指定一个sleep,而你现在执行的语句速度太快,没等他sleep,就已经搞定了。所以会重复。
    出现重复的就是sleep时间太长了