System.Threading.Thread はファイナライザーを実装していますが、IDisposable を実装していないことに気付きました。推奨される方法は、ファイナライザーが実装されている場合は常に IDisposable を実装することです。Jeffrey Richterは、このガイドラインは「非常に重要であり、常に例外なく従うべきである」と書いています。
では、なぜ Thread は IDisposable を実装しないのでしょうか? IDisposable の実装は、スレッドのファイナライズ可能なリソースの決定論的なクリーンアップを可能にする非破壊的な変更になるようです。
関連する質問: スレッドはファイナライズ可能であるため、実行中にスレッドがファイナライズされないように、実行中のスレッドへの参照を保持する必要がありますか?