C#で提供されているTimerについて
1. System.Windows.Forms.Timerは同期処理
2. System.Threading.Timerは非同期処理
3. System.Timers.Timerは非同期処理
2. と3. は非同期処理なので、Timerに設定したイベント内の処理時間がタイマー間隔より長かった場合、複数スレッドが作成されることになる。
もしタイマーでシーケンシャルに処理されることを意図した処理なのであればLock処理してやる必要がある。
以下、System.Timers.Timerを使用したサンプル
参考記事
galife - C# の Timer 種類別 特徴 と 使い方