当.NET进程主线程完成时,其他当前正在执行的线程会发生什么?

时间:2012-08-01 14:10:16

标签: .net multithreading

当.NET进程主线程完成时,其他当前正在执行的线程会发生什么?如果他们分配了必须在停止之前处置的非托管资源,该怎么办?

1 个答案:

答案 0 :(得分:2)

如果其他线程的Thread.IsBackground设置为true,则会立即退出。否则,应用程序将继续运行(如果它是WinForms或WPF应用程序,则不可见)。

如果其他线程具有非托管资源,那么当进程退出时,操作系统通常会关闭/释放这些资源(文件句柄等。此规则可能有例外,我不熟悉)。当您检测到应用程序正在退出时,仍然可以手动释放这些资源。