我正在使用C++/CLI開發混合託管/本機應用程序。在混合託管/非託管C++/CLI進程關閉期間線程關閉
我知道CLR會掛起(乾淨)關閉所有託管線程,但非託管的呢? CLR運行時正在關閉/釋放內存/正在運行的終結器時,非託管線程是否仍然可以運行?
我正在使用C++/CLI開發混合託管/本機應用程序。在混合託管/非託管C++/CLI進程關閉期間線程關閉
我知道CLR會掛起(乾淨)關閉所有託管線程,但非託管的呢? CLR運行時正在關閉/釋放內存/正在運行的終結器時,非託管線程是否仍然可以運行?
請注意,CLR將只暫掛具有設置爲true
的屬性IsBackGround
的託管線程。任何仍在運行的前景線程都會讓應用程序「掛起」,等待所有前景線程完成。
就非託管線程而言,CLR無法知道它們,所以是的,除非您編寫代碼來終止它們,否則它們將繼續運行。
請問爲什麼你的應用程序不能在它決定終止的時候優雅地關閉線程,而不是把它放在環境中來做清理工作?
不幸的是我沒有對我們使用的是那麼的優雅關機將是困難的遺留代碼幾乎沒有控制。 – 2009-05-29 17:40:00