【发布时间】:2012-08-01 22:12:07
【问题描述】:
当 .NET 进程的主线程完成时,其他当前正在执行的线程会发生什么情况?如果他们分配了必须在停止之前释放的非托管资源怎么办?
【问题讨论】:
标签: .net multithreading
当 .NET 进程的主线程完成时,其他当前正在执行的线程会发生什么情况?如果他们分配了必须在停止之前释放的非托管资源怎么办?
【问题讨论】:
标签: .net multithreading
如果其他线程将Thread.IsBackground 设置为true,它们将立即退出。否则应用程序将继续运行(如果它是 WinForms 或 WPF 应用程序,则不可见)。
如果其他线程具有非托管资源,则通常会在进程退出时由操作系统关闭/释放(文件句柄等。此规则可能存在我不熟悉的例外情况)。当您检测到应用程序正在退出时,最好手动释放这些资源。
【讨论】: