Roy*_*mir 4 asp.net multithreading iis-6
我创建了一个执行long sp的asp.net页面.让我们说一下执行sp的函数被调用Func1.
我见过这个问题:
如果我 Func1 在同一个线程中运行(正常执行),那么apppool将不会自行回收,因为他将其视为忙碌/工作.
但是如果我Func1在另一个线程中执行 - 那么apppool在本文设置的时间之后回收自己:

我的问题是:为什么?
如果我同步运行一个命令,那么app是否有效并且不符合apppool recycle的条件?如果我在新线程中创建它,那么它是否符合apppool recycle的条件?
这是为什么 ?线程是否比主线程更重要?
ASP.NET维护一个用于为请求提供服务的线程池线程列表.它知道它可以在没有任何线程处于活动状态时回收app域.
如果您在不了解ASP.NET的情况下创建线程或使用线程池线程,它将不会检测到您的线程处于活动状态并且可能会回收.
当它回收时,它会卸载AppDomain导致ThreadAbortException你的线程被抛出的东西.
您的要求的正常解决方案是拥有一个由Web应用程序控制的Windows服务.这显然是在一个单独的过程中,因此不受Web应用程序回收的影响.但是,这是一项非常重要的工作.
快速而肮脏的解决方案是从您的Web应用程序中异步启动Web请求.然后可以返回开始操作的页面.调用的"隐藏"页面可以阻止,直到SP完成.正如我所说,这是一个令人讨厌但很容易的解决方案.
| 归档时间: |
|
| 查看次数: |
2039 次 |
| 最近记录: |