作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须处理用 .NET Framework 1.1 编写的遗留 ASP.NET 应用程序。在检查应用程序代码时,我发现了有趣的部分。应用程序在 Application_Start 事件处理程序 (Global.asax) 中启动自定义线程。此线程必须在应用程序的整个生命周期内运行。
很久以前,我读到过永远不要使用它,但我不记得为什么了。与此类应用程序设计相关的问题是什么?崩溃时是否可以重新启动线程?崩溃会自动记录在某个地方(事件日志)吗? ASP.NET 运行时是否可以出于任何原因终止线程?
目前我对 AppPool 回收不感兴趣。它重新启动应用程序、所有 session 并创建新线程。
最佳答案
主要问题是线程可能随时被 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 .如果您升级,最好跳转到异步页面而不是保留一个单独的线程。
关于.net - 自定义线程在 Application_Start 中启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3669073/
我是一名优秀的程序员,十分优秀!