我正在使用c ++ / CLI处理混合托管/本机应用程序。
我知道CLR会暂停所有托管线程(一个干净的)关闭,但是那些非托管的线程呢?非CLG运行时是否可以继续运行,而CLR运行时是否正在关闭/释放内存/正在运行的终结器?
答案 0 :(得分:2)
我发现了有关此问题的更多信息:
答案 1 :(得分:1)
请注意,CLR仅挂起属性IsBackGround
设置为true
的托管线程。任何仍在运行的前台线程都将使应用程序“挂起”等待所有前台线程完成。
就非托管线程而言,CLR无法知道它们,所以是的,它们将继续运行,除非你编写代码来终止它们。
请问为什么你的应用程序无法在决定终止的时候优雅地关闭线程,而不是将它留给环境来进行清理?