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

时间:2008-12-17 20:25:31

标签: .net windows-services

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

2 个答案:

答案 0 :(得分:1)

您的流程创建的所有线程都在该流程中。当您的应用程序崩溃时,您的进程将死亡,并且该进程中的所有线程都会突然终止。他们没有被终止友好(他们没有得到中止信号或任何东西),他们刚刚被杀死。它们可能会或可能没有足够的处理器时间来完成执行 - 而是取决于它们正在做什么,以及Windows转储过程的速度有多快。

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

答案 1 :(得分:0)

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