【发布时间】:2008-12-17 20:25:30
【问题描述】:
我有一个用 dotNet 编写的 Windows 服务。有一个使用各种 Delegate.BeginInvokes 产生工作线程的工作服务。当服务崩溃时,这些线程会被自动清理吗?如果是的话,什么时候?
【问题讨论】:
标签: .net windows-services
我有一个用 dotNet 编写的 Windows 服务。有一个使用各种 Delegate.BeginInvokes 产生工作线程的工作服务。当服务崩溃时,这些线程会被自动清理吗?如果是的话,什么时候?
【问题讨论】:
标签: .net windows-services
您的进程创建的所有线程都在该进程内。当您的应用程序崩溃时,您的进程就会终止,并且该进程中的所有线程都会突然终止。他们不会像友好的一样被终止(他们没有收到中止信号或任何东西),他们只是被杀死了。它们可能有也可能没有足够的处理器时间来完成执行——这取决于它们在做什么,以及 Windows 转储进程的速度。
所有强大的 Windows (2000+) 版本都应该隔离您的进程,因此当它死亡时,整个进程空间被转储并回收内存。如果您在崩溃时访问的是非托管资源,那么整个情况都会发生变化,答案是“视情况而定”。
【讨论】:
仅当服务终止并从内存中卸载时
【讨论】: