自定义线程在Application_Start中启动

时间:2010-09-08 15:00:20

标签: .net asp.net .net-1.1 asp.net-1.1

我必须处理用.NET Framework 1.1编写的旧版ASP.NET应用程序。检查应用程序代码时,我找到了有趣的部分。应用程序在Application_Start事件处理程序(Global.asax)中启动自定义线程。该线程必须运行应用程序的整个生命周期。

很久以前我读到这应该永远不会用,但我不记得为什么。与此类应用程序设计有关的问题是什么?崩溃时是否可以再次启动线程?崩溃会自动记录到某个地方(事件日志)吗? ASP.NET运行时可以出于任何原因终止线程吗?

目前我对AppPool回收不感兴趣。它重新启动应用程序,所有会话并创建新线程。

1 个答案:

答案 0 :(得分:2)

主要问题是ASP.NET可能随时终止该线程。如果线程一直在运行,那么可能它应该做一些工作,并且终止它可能不会使你的应用程序在下次启动时满意。

现代解决方案包括使用异步页面和内置线程池。

如果您选择升级,请记住in .NET 1.1, threads throwing a top-level exception just exit; in .NET 2.0, threads throwing a top-level exception crash。如果你升级,那么跳过异步页面可能会更好,而不是保持一个单独的线程。