/// <summary> /// Finishes current lap and creates new one (ongoing). /// </summary> public void Lap() { if (!_running || _paused) { return; } List <LapModel> added = new List <LapModel>(); if (_laps.Count == 0) { LapModel firstLap = new LapModel(1, ElapsedTime, true); _laps.Add(firstLap); added.Add(firstLap); } if (!_laps.Last().Finished) { _laps.Last().Finish(); } LapModel lap = new LapModel(_laps.Count + 1, TimeSpan.Zero); _laps.Add(lap); added.Add(lap); LapsAdded?.Invoke(this, new LapsAddedEventArgs(added)); }
/// <summary> /// Starts/resumes the stopwatch. /// </summary> public void Start() { if (_running && !_paused) { return; } LapModel lastLap = null; if (_laps.Count > 0) { lastLap = _laps.Last(); } if (!_running) { _elapsedTimeToLastPause = TimeSpan.Zero; _running = true; } _lastResumeTime = DateTime.Now; lastLap?.Resume(); _paused = false; }
/// <summary> /// Pauses the stopwatch. /// </summary> public void Pause() { if (!_running || _paused) { return; } LapModel lastLap = null; if (_laps.Count > 0) { lastLap = _laps.Last(); } _elapsedTimeToLastPause = ElapsedTime; lastLap?.Pause(); _paused = true; }