ThreadStatic 属性は、静的変数をスレッドごとに一意として宣言します。そのような変数を正しく処分する簡単なパターンを知っていますか?
ThreadStatic の前に使用したのは ThreadContextManager です。すべてのスレッドには、すべてのスレッド固有の情報を保持する ThreadContext が割り当てられました。いくつかのスレッドを生成し、それらを機能させました。次に、それらがすべて終了したら、ThreadContentManager を破棄しました。これにより、IDisposable の場合はすべてのコンテキストが破棄されました。
このパターンを ThreadStatic オブジェクトにすぐに変換する方法がわかりません。スレッドが死ぬため、オブジェクトは最終的に破棄され、スレッドを参照するものは何もありません。ただし、可能な限り決定論的な破棄を優先します。
アップデート
私は実際にスレッドを直接制御するわけではありません。タスクを実行する ThreadPool を持つ Microsoft CCR を使用しています。すべてのタスクが完了したら、Dispatcher (スレッドプールを保持する) を破棄します。問題は、「スレッドのメイン関数の最後に」何もする機会がないため、スレッドの実行の最後に手動で処理を行うことができないということです。どうにかして、スレッドの外部からスレッドの静的オブジェクトにアクセスできますか?