.net - 自定义线程在 Application_Start 中启动

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

我必须处理用 .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/

相关文章:

c# - 窗口内弹出窗口 : How to block UI thread?

javascript - href 链接触发 asp.net c# 按钮事件

c# - 将 Javascript 变量传递给后面的 C# 代码

c# - 找出Windows服务的运行进程名称.NET 1.1

.net-1.1 - .NET 3.5 SP1 将如何影响我的 .NET 1.1 应用程序?

c# - 递归枚举图

.net - WPF 内存泄漏

c# - 对象与目标类型不匹配

c# - Web API Controller 不适用于 ASP.NET Web 窗体中的 POST/PUT/DELETE

.net-2.0 - 是否有在 .Net 2.0 代码中实现的 .Net 1.1 兼容的 String.GetHashCode?