本帖最后由 hwj383 于 2009-09-18 16:39:18 编辑

解决方案 »

  1.   

    位置 B: { 
    解法1:string now = DateTime.Now.ToString("yyyy-MM-dd hh:mm"); 
    解法2:string now = 上次更新时间 + 更新间隔

    Save();//操作,假设耗时5s 

      

  2.   

    string now = DateTime.Now.ToString("yyyy-MM-dd hh:mm"); 
    不能放到最上面?
      

  3.   

    如果你想省事省心
    可以考虑使用quartz 一个开源的作业调度框架
      

  4.   

    执行完记录log不就行了,减掉前面时间
      

  5.   

    关键是你用什么做定时器?System.Threading.Timer?如果你把Timer设置为每小时触发一次,那么无论触发后你消耗了多少时间在干活,只要这个时间不超过1小时,下一次的触发仍然是准点的。或者你可以不设置每小时触发,只设置下一次的触发时间。例如说,这次触发是10:00,干活完毕是10:02,那么你就重设Timer为58分钟后触发,也就是误差不累加,这就解决问题了。
      

  6.   

    如果你是在C#.Net里作Window类的程序还可以这么做.
    如果你是Aps.Net做在页面上是不行的.
      

  7.   

    你的顾虑真是累死个人了。与其如此,不如你的定时器,每隔几秒钟启动一次,在每一次启动中判断是否已经距离上次记录时间过去了1个小时,如果过去了就立即开始处理。这样免得玩那么复杂的设计游戏。一些人可能纠缠于1小时1次的定时器要比5秒钟一次的定时器更加“少占用CPU时间”。我们只需要判断这个几秒钟一次的定时器控制(仅仅是简单读取一个参数再判断一下只时间差而已)是否对系统价值造成了几毛钱影响?!如果没有什么实质影响,就不必纠缠于它。