質問: new Timer(); GC.KeepAlive(timer); timers.Add(timer); // タイマの設定処理... timer.Start(); } } ``` 例えば、KeepAliveがうまく効いていないとしたときに、インスタンスの参照を維持する為に行った、timers変数(List)へのタイマインスタンスはGC回避に有効でしょうか。 Listの要素については参照されているとみなされずGCされてしまうでしょうか。
回答: `GC.KeepAlive`はインスタンスの寿命を`KeepAlive`メソッド呼び出しまで保証するものですので、事前に呼ぶのは誤りです。 一方`List`に登録されているインスタンスは`List`自体が参照されている限り有効です。この場合は`static`フィールドですので、基本的にはアプリケーション終了まで参照され続けるはずです。