如何在程序执行的时候动态的申请多个线程啊?
具体目标:现在有一个文件监视的控件,会监视一个文件夹目录的改变,若发生改变,则执行一个方法,比如DoWork,现在问题是,没发生一次文件改变就会调用一次这个方法,可能出现方法还没执行完,这边又有新的文件变化,所以想使用多线程,没发生一次改变,新申请一个线程,执行完成后,释放掉该线程,以确保每个文件对应的方法都能执行完。注,所有的方法都是一样的,只是出入的参数不一样。

解决方案 »

  1.   

    把每个多线程加上线程锁(Lock)就应该解决了~
      

  2.   

    http://support.microsoft.com/kb/815804/zh-cn
      

  3.   

    好像有个方法可以实现:在每个新线程里对应一个方法,用IO流创建个<发生改变名的文件名>的文件,然后每调用这个DoWork时,判断下,如果有你创的那个文件名则不再调用线程处理当前文件,如果没有,则再调用!最后完毕后,再把新建的比较文件销毁。
      

  4.   

    利用多线程的同步等待机制。static AutoResetEvent autoEvent = new AutoResetEvent(false);public void ViewFileFolder()
    {
         autoEvent.WaitOne();
         // Do Work,做你想做的事情。
          DoWork();
         autoEvent.Set();
    }然后利用线程,执行ViewFileFolder方法。
    if(文件夹发生改变)
    {
         Thread thrd = new Thread(new ThreadStart(ViewFileFolder));
    }
    //线程执行完不需要你释放,GC做的事情。
      

  5.   

    楼上的方法我试过,根本就不执行DoWork方法了啊?