解决方案 »

  1.   

    application_start事件应该是只执行一次的啊……不懂了,就跟当初我怎么都抓不到application_end事件一样,完全不懂了
      

  2.   

    application_start理论上的确是只运行一次  但是网站在某些情况会自动重启然后再次调用application_start  而线程却没有关闭所以会有两个线程
      

  3.   

    threadStarted 判断这里,尝试先lock一下,重入了,很可能是因为同事有2个线程调用了Application_Start
    而在threadStarted 赋值之前,两个线程都进入了if判断,lock一下应该可以解决重入问题。另外多次调用Application_Start很可能是调试的原因,尝试打日志,软件直接在IIS上运行一下,可能就不会多次调用了。
    当然,IIS重启也是经常发生的事情。。但是第一次就直接进入2次,应该可能性不是很大。下面这句是复制来的:
    你看下应用程序池属性里回收中回收工作进程和性能中空闲超时是否启用了?不想重复运行Application_Start就把复选框不要选中
      

  4.   

    大神你这等于没说,我当然知道网站天生多线程,你要是知道一些端倪,烦请讲解一下,为什么我这调试时会有两个线程进入方法?使用IIS调试时,application_start执行了几次?
      

  5.   

    Asp.net如果进程池被回收了,就会重新运行application_start 所以就有可能运行多次。
      

  6.   

    按理说如果进程池被回收,则进程创建的线程也应该被回收才对啊,那就算重新启动应用运行application_start也应该还是一个线程。
      

  7.   

    进程池回收的不是他的整个进程不等于exe退出,是拉圾回收,一般会在进程池里面设定的内存达到一定的值时进程池开始回收,而你的线程是一直运行下去的,所以不会被回收。
      

  8.   

    !threadStarted 你这个是静太对象?不是的话就是被回收执行完这个对象就没啥用了