秒表计时器

/// <summary>

/// 秒表计时器

/// </summary>

public class StopWatch

{

/// <summary>

/// 一个步骤

/// </summary>

class StepClass

{

public string stepname;

public DateTime start;

public DateTime end;

}

private string _name;

private DateTime _start;

private DateTime _stepstart;

private double _skipMS;

private List<StepClass> _steps;

public StopWatch() : this("未命名") { }

public StopWatch(string name)

{

_name = name;

_start = DateTime.Now;

_stepstart = _start;

_steps = new List<StepClass>();

_skipMS = 0;

}

/// <summary>

/// 记一个步骤

/// </summary>

/// <param name="name"></param>

public void Step(string name)

{

_steps.Add(new StepClass()

{

stepname = name,

start = _stepstart,

end = DateTime.Now

});

_stepstart = DateTime.Now;

}

/// <summary>

/// 跳过这段时间

/// </summary>

/// <param name="skipTotalTime"></param>

public void Skip(bool skipTotalTime = false)

{

if (skipTotalTime) _skipMS += DateTime.Now.Subtract(_stepstart).TotalMilliseconds;

_stepstart = DateTime.Now;

}

/// <summary>

/// 到现在为止的用时

/// </summary>

public double TotalMS

{

get { return DateTime.Now.Subtract(_start).TotalMilliseconds - _skipMS; }

}

/// <summary>

/// 计时信息

/// </summary>

/// <returns></returns>

public override string ToString()

{

StringBuilder sb = new StringBuilder();

sb.AppendLine($"计时器:{_name},总用时= {TotalMS:0.0} 毫秒,开始时间={_start:HH:mm:ss.fff},步骤数={_steps.Count}");

for(int i= 0; i<_steps.Count;i++)

{

sb.AppendLine($" {i:00} 用时= {_steps[i].end.Subtract(_steps[i].start).TotalMilliseconds,6:0.0} 毫秒\t{_steps[i].stepname}\t开始时间={_steps[i].start:HH:mm:ss.fff}");

}

return sb.ToString();

}

/// <summary>

/// 记录到日志

/// </summary>

public void ToLog()

{

Log.info($"{ToString()}");

}

}

相关推荐
纳切威6 分钟前
CentOS 7部署Zabbix5.0
linux·运维·centos·zabbix
sunshine-sm9 分钟前
CentOS Steam 9安装 MySQL 8
linux·运维·服务器·数据库·mysql·centos·centos stream
bug攻城狮10 分钟前
CentOS 7 快速检查软件包是否已安装的5种方法
linux·运维·centos
尚久龙44 分钟前
安卓学习 之 用户登录界面的简单实现
android·运维·服务器·学习·手机·android studio·安卓
DONG9991 小时前
ubuntu 22 安装轻量级桌面Xfce并使用xrdp远程桌面连接
linux·运维·ubuntu
帅得不敢出门2 小时前
macOS苹果电脑运行向日葵远程控制软件闪退
windows·macos·远程控制·向日葵
呆萌小新@渊洁2 小时前
linux升级系统,重启出现Minimal BASH-like line editingis supported
linux·服务器
東雪蓮☆2 小时前
从零开始掌握 Web 与 Nginx:入门详解
运维·服务器·前端·nginx
ajassi20002 小时前
开源 C++ QT Widget 开发(十四)多媒体--录音机
linux·c++·qt·开源
zwhSunday3 小时前
Linux驱动开发(2)进一步理解驱动
linux·驱动开发