【问题标题】:Does a dotnet crashing service terminate its own threads?dotnet 崩溃服务是否会终止其自己的线程?
【发布时间】:2008-12-17 20:25:30
【问题描述】:

我有一个用 dotNet 编写的 Windows 服务。有一个使用各种 Delegate.BeginInvokes 产生工作线程的工作服务。当服务崩溃时,这些线程会被自动清理吗?如果是的话,什么时候?

【问题讨论】:

    标签: .net windows-services


    【解决方案1】:

    您的进程创建的所有线程都在该进程内。当您的应用程序崩溃时,您的进程就会终止,并且该进程中的所有线程都会突然终止。他们不会像友好的一样被终止(他们没有收到中止信号或任何东西),他们只是被杀死了。它们可能有也可能没有足够的处理器时间来完成执行——这取决于它们在做什么,以及 Windows 转储进程的速度。

    所有强大的 Windows (2000+) 版本都应该隔离您的进程,因此当它死亡时,整个进程空间被转储并回收内存。如果您在崩溃时访问的是非托管资源,那么整个情况都会发生变化,答案是“视情况而定”。

    【讨论】:

      【解决方案2】:

      仅当服务终止并从内存中卸载时

      【讨论】:

      • 即使还有线程在执行,服务是否会卸载?
      • @[Orion Adrian]:我对此表示怀疑。你真的应该负责管理你自己的应用程序状态;-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      相关资源
      最近更新 更多