質問

混合モード実行可能ファイルがあり、ネイティブのグローバル変数のコンストラクターがメインスレッドで呼び出されていることに気付きましたが、デストラクタは他のスレッドで呼び出されます。
スレッドの名前は「スレッド:: IntermediatethreadProc」です。

これの理由は何ですか?そして、この「スレッド:: IntermediatethreadProc」スレッドは何ですか?

ありがとう。

役に立ちましたか?

解決

Thread :: IntermediatethreadProc()は、CLRのスレッド開始関数として使用されるCLRの小さなヘルパー関数です。 SSCLI20ソース、src vm threads.cppでそれを見つけてください

別のスレッドでこの実行を見ることが予想されます。クリーンアップコードは、AppDomainがアンロードされると実行されます。 CLRロジックは複雑ですが、Heapをクリーンアップするために最後にAppDomainが最後にファイナルライザースレッドを実行すると実行されるようです。すべての管理されたオブジェクトが死んでおり、他のスレッドが実行されていないと仮定できます。コードが2つの2番目のファイナルライザースレッドタイムアウトの対象となることに注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top