private void OnTick() { lock (this) { MillisecondsLeft -= 1; OnCountdownChanged?.Invoke(MillisecondsLeft); if (MillisecondsLeft > 0) { return; } var sensor = NextSensor; TimingTriggered?.Invoke(sensor, DateTime.Now); if (NextSensor + 1 >= SensorCount) { Reset(); return; } NextSensor++; OnNextSensorChanged?.Invoke(NextSensor); MillisecondsLeft = GetNextWaitTime(); } }
public void Reset() { _timer.Stop(); MillisecondsLeft = 0; NextSensor = 0; OnRunningChanged?.Invoke(false); OnCountdownChanged?.Invoke(MillisecondsLeft); OnNextSensorChanged?.Invoke(NextSensor); }
public void SkipNextSensor() { if (NextSensor + 1 >= SensorCount) { return; } NextSensor++; MillisecondsLeft += GetNextWaitTime(); OnCountdownChanged?.Invoke(MillisecondsLeft); OnNextSensorChanged?.Invoke(NextSensor); }