私はC++/CLIを使用して、混合管理/ネイティブアプリケーションを開発中です。混在した管理対象/非管理対象のC++/CLIプロセスシャットダウン中にスレッドがシャットダウンする
私は、CLRが(クリーンな)シャットダウン時にすべての管理対象スレッドを中断することを知っていますが、アンマネージなものはどうですか? CLRランタイムがメモリ/ファイナライザをシャットダウン/解放している間に、アンマネージスレッドがまだ実行されている可能性はありますか?
私はC++/CLIを使用して、混合管理/ネイティブアプリケーションを開発中です。混在した管理対象/非管理対象のC++/CLIプロセスシャットダウン中にスレッドがシャットダウンする
私は、CLRが(クリーンな)シャットダウン時にすべての管理対象スレッドを中断することを知っていますが、アンマネージなものはどうですか? CLRランタイムがメモリ/ファイナライザをシャットダウン/解放している間に、アンマネージスレッドがまだ実行されている可能性はありますか?
私は、この問題に関する更なる情報を見つけました:
CLRは、IsBackGround
のプロパティがtrue
に設定された管理対象スレッドのみを中断することに注意してください。まだ実行中のフォアグラウンドスレッドは、すべてのフォアグラウンドスレッドが終了するのを待ってアプリケーションを「ハング」状態にします。
アンマネージドスレッドに関する限り、CLRはそれらを知る方法がないため、終了するコードを記述しないかぎり実行されます。
私は、あなたのクリーンアップを行うために環境に放置するのではなく、終了することを決定した時点でアプリケーションがスレッドを正常にシャットダウンできない理由を尋ねることがありますか?
残念ながら、私たちはとても正常なシャットダウンが困難になります使用している既存のコードをほとんど制御を持っています。 –