首先,用递归算法遍历目录,并在foreach循环中把文件的一些信息,如文件名,大小等存入access中,我想实现的功能就是,用一个按钮,刚开始text属性问"扫描",按下按钮后开始foreach循环扫描,此时按钮变成"暂停",按下按钮后,循环中断,再次按下按钮,循环继刚才中断处继续循环,请各位朋友帮帮忙
之前有朋友说用thread线程的suspend和resume,但这2个在.net2.0中都过时了

解决方案 »

  1.   

    查了下  确实过时了.......
    由于 System.Threading.Thread.Suspend 和 System.Threading.Thread.Resume 不依赖于受控制线程的协作,因此,它们极具侵犯性并且会导致严重的应用程序问题,如死锁(例如,如果挂起的线程占有另一个线程需要的资源,就会发生这种情况),所以在.net framework2.0中标记为过时并且以后将取消这两个方法。 暂停还可以用Thread.Sleep()来实现,如何恢复,没想好...
      

  2.   

    看了下MSDN的介绍,看来得用个全局变量判断是否继续了...........bool CanResume = false;Button_Suspend_Click()
    {
    CanResume = false;
    //这个while也要用个线程去跑...
    while(CanResume)
    {
       Thread.Sleep(0);
    }
    }Button_Resume_Click()
    {
      CanResume = false;
    }
      

  3.   

    Button_Suspend_Click()
    {
    CanResume = false;
    //这个while也要用个线程去跑...
    while(!CanResume)
    {
       Thread.Sleep(0);
    }
    }Button_Resume_Click()
    {
      CanResume = true;
    }
      

  4.   

    看看这几个
    Threading.Monitor.Enter
    Threading.Monitor.Pulse
    Threading.Monitor.Exithttp://blog.csdn.net/wuyazhe/archive/2006/11/09/1375082.aspx
      

  5.   

    帮LZ顶
      
    http://user.qzone.qq.com/31767702
      

  6.   

    Monitor? 
    互斥,可以尝试下
      

  7.   

    使用锁的机制就可以了,推荐使用metux
    metux.waitone(); == thread.suspend()
    metux.ReleaseMutex() == thread.resume()
    参见
    http://blog.csdn.net/tjvictor/
    中的
    C#中使用Monitor类、Lock和Mutex类来同步多线程的执行