GC.WaitForPendingFinalizers()のMSDNドキュメントからの引用:
ファイナライザーが実行されるスレッドは指定されていないため、このメソッドが終了する保証はありません。
私はこの文を本当に理解していません。このメソッドはどのような状況で終了しませんか?そして、これはファイナライザーが実行されるスレッドと何の関係がありますか?なぜ彼らはスレッドが「指定されていない」と述べているのですか?
ファイナライザースレッドに関しては、次のことが正しいと思います(?):
- ファイナライザースレッドは1つだけです。
- ファイナライザーは常に別のスレッドで実行されます(つまり、メインスレッド、または他のユーザーが作成したスレッドでは実行されません)。
注:ファイナライザーの1つがブロックされると、このメソッドがブロックされることは想像できますが、この問題は、ファイナライザーに使用されているスレッドに関係なく存在します。