我使用的是System.Timers.Timer控件。
interval = 60000  也就是一分钟。在Timer1_Elapsed事件中调用一些方法。如果只是单纯的调用方法,那么每隔一分钟程序将会开启一个线程。但我并不想这么做,我想执行完一次任务后,才开始进行下一次的任务,但是每次执行任务的时间可能需要比较长的时间(如几十分钟甚至几个小时),我该如何实现。

解决方案 »

  1.   

    LOCK 吧。  当前任务完成后 再允许进入下一个任务
      

  2.   

    加锁不现实,如果等待时间太久,那么会有N多线程等待,造成线程池线程耗尽~用单独的一个线程
    bool exit =false;while(true)
    {
       if(exit)
          break;
       DoSomthing();
       Thread.Sleep(xxx);
    }
      

  3.   

    加锁不现实,如果等待时间太久,那么会有N多线程等待,造成线程池线程耗尽~用单独的一个线程
    bool exit =false;while(true)
    {
      if(exit)
      break;
      DoSomthing();
      Thread.Sleep(xxx);
    }
      

  4.   


    Timer.Enabled=false;
    dosomething();
    Timer.Enabled=true;
    行不