トリガーが発生してドアが 5 秒間開いてから再び閉じるシステムを作成しようとしています。私はこれに Threading.Timer を使用しています。
OpenDoor();
System.Threading.TimerCallback cb = new System.Threading.TimerCallback(OnTimedEvent);
_timer = new System.Threading.Timer(cb, null, 5000, 5000);
...
void OnTimedEvent(object obj)
{
_timer.Dispose();
log.DebugFormat("All doors are closed because of timer");
CloseDoors();
}
とあるドアを開けるとタイマーがスタート。5 秒後、すべてが再び閉じます。
しかし、特定のドアを開けて 2 秒待ってから別のドアを開くと、3 秒後にすべてが閉じます。タイマーを「リセット」するにはどうすればよいですか?