/// <summary> /// Resumes paused timer and lap time. Does nothing if wasn't paused. /// </summary> /// <returns>Elapsed time at pause moment.</returns> public virtual void Resume() { if (State == StopWatchStatus.PAUSED) { StartTime = LapStartTime = Utils.GetNowUnixTimestamp(); State = StopWatchStatus.RUNNING; } }
/// <summary> /// Reset's all timer's counters. /// </summary> /// <returns>Current timer.</returns> public virtual StopWatch Reset() { _elapsedTime = 0; LapTime = 0; LapStartTime = 0; StartTime = 0; State = StopWatchStatus.NOT_STARTED; return(this); }
/// <summary> /// Starts timer if it wasn't started yet. /// </summary> /// <returns>Started timer.</returns> public virtual StopWatch Start() { if (State == StopWatchStatus.NOT_STARTED) { State = StopWatchStatus.RUNNING; this.StartTime = Utils.GetNowUnixTimestamp(); this._elapsedTime = 0L; } return(this); }
/// <summary> /// Stops timer, cannot be resumed\started after. /// </summary> /// <returns>Elapsed time</returns> public virtual long Stop() { if (State != StopWatchStatus.STOPPED) { long elapsedTime = Pause(); State = StopWatchStatus.STOPPED; return(elapsedTime); } return(_elapsedTime); }
/// <summary> /// Pause whole timer including lap time. Does nothing if wasn't running. /// </summary> /// <returns>Elapsed time at pause moment.</returns> public virtual long Pause() { if (State == StopWatchStatus.RUNNING) { long currentTimestamp = Utils.GetNowUnixTimestamp(); _elapsedTime += currentTimestamp - StartTime; if (LapStartTime > 0) { LapTime += currentTimestamp - LapStartTime; } State = StopWatchStatus.PAUSED; } return(_elapsedTime); }
public StopWatch() { State = StopWatchStatus.NOT_STARTED; }