1.Timer2.Thread.Sleep3.ManualResetEvent.WaitOne4.其它?Sleep和WaitOne的时间长度有没有限制?比如我要阻塞1个月........呵呵大家喜欢用哪种方法?顺便说说理由哈

解决方案 »

  1.   

    个人喜欢用Thread.Sleep,用timer的话,多几个这种操作,就要好几个timer。ManualResetEvent.WaitOne这个没用过。
      

  2.   

    oracle 有可以生成SQL 语句,交给job 定期执行.
    本地程序就不用去管了.
      

  3.   

    Thread.Sleep,其他的没怎么用过,不好说
      

  4.   

    比如我要阻塞1个月这个不好说...
    不过一般们都是用timer..和Thread.Sleep
      

  5.   

    你说周期性执行一个操作,我想必定是要让执行任务的线程延时一个周期然后再做下边的工作。Thread.Sleep就是阻塞一个线程一段时间,一般不要去让一个线程阻塞太长的时间,因为在Sleep过程中,你就完全失去对这个线程的控制了。WaitOne不是用在周期性操作的,而是用在线程同步的延时操作。最好是保持线程的主循环,在循环中判断上次执行与现在的时间的TimeSpan,再决定是不是执行,中间可以适当的Sleep。
      

  6.   

    我写了个Windows Performance Counter之类的程序,如Window本身自带的Perfmon.exe差不多,用的是Sleep.我觉得Sleep和timer应该是同一种东西的。是Sleep包装了timer ?忘高人指点。我想都一样,重点是控制不要多发同一Counter的线程。
      

  7.   

    GKW() :
    无论是Sleep还是WaitOne,用while + ThreadPool.QueueUserWorkItem就可以模拟Timer了。
      

  8.   

    阻塞一个月,你的方案如果选择使用Sleep或者Timer直接定时一个月的话,岂不是玩完这种方式的定时,需要做一个任务列表,然后轮询查看是否该执行这个任务了
      

  9.   

    建议Timer
    道理很简单,一个月内要是停电关机了,我看你怎么sleep&wait出一个月
    但并不是用Timer阻塞一个月,一小时一取时间满足时间要求就可以执行了
    时间对比出一个月应该很简单吧
      

  10.   

    WaitOne(1000,true)
    比较好,等1秒没反应就退,有反应就干完.
      

  11.   

    Timer是线程的简单封装ManualResetEvent 其实也是一样的...
      

  12.   

    按照我的实际经验来说,用timer
      

  13.   

    个人喜欢用sleep! 如果只是简单到定时执行一个函数那就用timer吧
      

  14.   

    timer..和Thread.Sleep多,
    不过Thread.Sleep有时会卡死,只好用TIMER
    有关Form的,就智能用Form.timer了
      

  15.   

    使用Timer设定一个一分钟一次的轮巡,未执行事件在1分钟内的就开一个线程启动,然后Mark那个事件为“执行”。
      

  16.   

    阻塞1个月真酷毙了,用timer隔一小段读一次吧。sleep,waitone这些就不要用了,一个月啊,老兄,一个月!