用户在后台aspx界面 添加任意多个任务, 然后系统在定期在执行这些任务。是不是一个任务是一个线程。 如果执行时间到了,那么有10 个任务,就有10线程在服务器上同时执行任务?

解决方案 »

  1.   

    aspx里面做的任务 不用开线程吧不知道楼主说的是哪种任务?需要在服务器上运行的任务?还是数据库中的操作?
      

  2.   

    用户在aspx页添加的是什么任务? 也可以直接实现到windows的计划任务,不过这样不安全。自己写一个服务。不停的循环检测任务列表,有满足要求的就执行。
      

  3.   

    WEB程序中自己写一个线程。不停的循环检测任务列表,有满足要求的就执行。-------------------------------------------------------我就是这个意思, 如果有10个任务都是在0 点执行。  一到0点,10个任务要同时执行,就要开10个线程?  是这个理把?  如果一个个任务执行,如果第1个任务执行时间比较长, 等到再执行第2个任务,时间已经不是0点了,  那么第2个任务就不能执行了?  看来只能同时开10个线程了? 是这样吧???
      

  4.   

    如果一个个任务执行,如果第1个任务执行时间比较长, 等到再执行第2个任务,时间已经不是0点了, 那么第2个任务就不能执行了?
    =================
    不会的, 任务列表是在执行之前获取的,循环体内不需做判断。
    所以会逐个执行下去,并不是不执行。只是要晚点执行。
    如果执行时间的需求不是硬性的话无妨。
    需要注意的是:
       条件判断会苛刻点。如下:
         DateTime.Now >= TaskTime 并且 DateTime.Now - TaskTime < 10s
       =号有且必须只有一处。并且这个10秒 和间隔的单位必须相同。否则会出现不执行或多执行。   还有就是web请求的处理模式是被动处理。 也就是当0点的时候没有人访问这个web页,程序将不会执行。   你可以在Application_start里new thread(funname)来做一个内置线程或写一个winForm来循环检测该执行哪些任务。
       线程崩溃,web服务要挂掉。 winForm不是很方便的获取到当前任务的执行状态
      

  5.   

    它应该在第二天才会继续执行。
    同一天不会执行两次。Time.Now >= TaskTime 并且 Time.Now - TaskTime < 10s   flag: @1
    比如每天 0点0分(00:00:00)执行,  循环体检测1次后就sleep(10000)//10秒。   flag: @2在flag @1处,.   如果  条件判断 小于 10秒。 可能一次都不会执行。
    .   如果  条件判断 大于 10秒。 至少执行一次。可能有两次。
    .   如果  条件判断 等于 10秒。 每天只会发生一次。你测试一下吧。就知道了。。
      

  6.   

    sleep的时间间隔 和条件判断的时间单向差值
    ................................^^^^....
      

  7.   

    刚特意去查了MSDN,.net里用 Process类实现,
    它不会一直等待程序的执行。所以用不找考虑的那么复杂。这些process和os都帮你解决了。它的功能很强大。完全可以查找到某个名字的进程是否在执行,和它的状态。