代码之家  ›  专栏  ›  技术社区  ›  Ladislav Mrnka

自定义线程在应用程序启动时启动

  •  3
  • Ladislav Mrnka  · 技术社区  · 14 年前

    我要处理遗产ASP.NET用.NETFramework 1.1编写的应用程序。在检查应用程序代码时,我发现了有趣的部分。应用程序在应用程序启动事件处理程序中启动自定义线程(全球.asax). 此线程必须在应用程序的整个生命周期中运行。

    很久以前我读到这本不应该被使用,但我不记得为什么。这种应用程序设计有哪些问题?线程崩溃时是否可以重新启动?崩溃是否会自动记录在某个地方(事件日志)?可以ASP.NET运行时出于任何原因终止线程?

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

    1 回复  |  直到 14 年前
        1
  •  2
  •   Stephen Cleary    14 年前

    主要的问题是线程可能随时被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 . 如果升级,最好是跳转到异步页面,而不是保留一个单独的线程。

    推荐文章