我正在使用C++/CLI开发混合托管/本机应用程序。在混合托管/非托管C++/CLI进程关闭期间线程关闭
我知道CLR会挂起(干净)关闭所有托管线程,但非托管的呢? CLR运行时正在关闭/释放内存/正在运行的终结器时,非托管线程是否仍然可以运行?
我正在使用C++/CLI开发混合托管/本机应用程序。在混合托管/非托管C++/CLI进程关闭期间线程关闭
我知道CLR会挂起(干净)关闭所有托管线程,但非托管的呢? CLR运行时正在关闭/释放内存/正在运行的终结器时,非托管线程是否仍然可以运行?
请注意,CLR将只暂挂具有设置为true
的属性IsBackGround
的托管线程。任何仍在运行的前景线程都会让应用程序“挂起”,等待所有前景线程完成。
就非托管线程而言,CLR无法知道它们,所以是的,除非您编写代码来终止它们,否则它们将继续运行。
请问为什么你的应用程序不能在它决定终止的时候优雅地关闭线程,而不是把它放在环境中来做清理工作?
不幸的是我没有对我们使用的是那么的优雅关机将是困难的遗留代码几乎没有控制。 – 2009-05-29 17:40:00