代码之家  ›  专栏  ›  技术社区  ›  Orion Adrian

dotnet崩溃服务是否会终止自己的线程?

  •  0
  • Orion Adrian  · 技术社区  · 16 年前

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

    2 回复  |  直到 16 年前
        1
  •  1
  •   ChrisN    16 年前

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

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

        2
  •  0
  •   Steven A. Lowe    16 年前