c# - C#中方法的持续时间,时间开始和时间结束

标签 c# time execution duration

如何记录使用c#执行的方法的持续时间、开始时间和结束时间?

例如,我点击一个按钮,它会做一些事情。一旦开始,我将获得开始时间,然后当执行完成时,我将获得结束时间以及完成所需的持续时间。

最佳答案

您可以使用 Stopwatch ,位于 System.Diagnostics 命名空间中。

这具有普通秒表的功能,具有 StartStopResetElapsedMilliseconds

这非常适合测量特定代码块或方法。但是,您确实声明除了执行持续时间之外还需要开始时间和结束时间。您可以通过继承 Stopwatch 类并使用几个 DateTime 属性扩展它来创建自定义秒表。

public class CustomStopwatch : Stopwatch
    {

        public DateTime? StartAt { get; private set; }
        public DateTime? EndAt { get; private set; }


        public void Start()
        {
            StartAt = DateTime.Now;

            base.Start();
        }

        public void Stop()
        {
            EndAt = DateTime.Now;

            base.Stop();
        }

        public void Reset()
        {
            StartAt = null;
            EndAt = null;

            base.Reset();
        }

        public void Restart()
        {
            StartAt = DateTime.Now;
            EndAt = null;

            base.Restart();
        }

    }

然后像这样使用它:

CustomStopwatch sw = new CustomStopwatch();
sw.Start();
Thread.Sleep(2342); // just to use some time, logic would be in here somewhere.
sw.Stop();
Console.WriteLine("Stopwatch elapsed: {0}, StartAt: {1}, EndAt: {2}", sw.ElapsedMilliseconds, sw.StartAt.Value, sw.EndAt.Value);

关于c# - C#中方法的持续时间,时间开始和时间结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23948349/

相关文章:

c# - EF4.1 : How to deal with items being added to an Object's collection

c# - 如何说服GetProto吐出proto3格式

windows - windows .bat 脚本中的测量命令 : command not found

c - 执行和评估有什么区别?

c# - 在给定支持字段的情况下获取 C# 自动属性的 PropertyInfo

c# - 没有异步 API 时如何并行化 I/O 操作

parsing - 无法将字符串解析为具有时区偏移量的时间,其中包含RFC3339带有看似矛盾的错误

mysql - 一个正确的查询,获取包含 time_start<=time_pc<=time_finish 的所有记录

performance - 是否有可能预测程序将运行多长时间?

c++ - "Operation not permitted"尝试执行已编译的 C++