現在、以下の環境でWindowsアプリを作成しています。

  • フレームワーク: .NET Framework 4.5.2
  • 言語: C#
  • ターゲットPC: Windows10 x64

そこで、掲題の件について質問です。
以下の様なコードでタイマを登録しているのですが、どうも2,3時間程度稼働してからタイマが止まっているようなのです。
ガベージコレクタかな?と思ったのですが、「GC.KeepAlive()」とtimers変数にタイマインスタンスを登録しています。

using System.Timers;

public class TimerSample {
    private static List<Timer> timers = new List<Timer>();

    private static void schedule() {
        var timer = new Timer();
        GC.KeepAlive(timer);
        timers.Add(timer);
        // タイマの設定処理...
        timer.Start();
    }
}

例えば、KeepAliveがうまく効いていないとしたときに、インスタンスの参照を維持する為に行った、timers変数(List)へのタイマインスタンスはGC回避に有効でしょうか。
Listの要素については参照されているとみなされずGCされてしまうでしょうか。