c#中方法的时间持续时间、开始时间和结束时间

本文关键字:时间 开始 开始时 结束 持续时间 方法 | 更新日期: 2023-09-27 18:05:56

如何记录时间持续时间,时间开始和时间结束的方法,一旦它被执行使用c#?

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

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);

您可以使用System.Diagnostics.Stopwatch类来实现这一点。参见示例

            // Create new stopwatch
            System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
            // Begin timing
            stopwatch.Start();
            // Tasks performed by method
            // Stop timing
            stopwatch.Stop();
            Console.WriteLine("Time taken : {0}", stopwatch.Elapsed);

我这样做了

var watch = System.Diagnostics.Stopwatch.StartNew();
string startTime = DateTime.Now.ToLongTimeString();
//Insert Code Here
watch.Stop();
string timeEnd = DateTime.Now.ToLongTimeString();
//Time Format
string[] hours = watch.Elapsed.TotalHours.ToString().Split('.');
string[] minutes = watch.Elapsed.TotalMinutes.ToString().Split('.');
string[] seconds = watch.Elapsed.TotalSeconds.ToString().Split('.');
string[] milliseconds = watch.Elapsed.TotalMilliseconds.ToString().Split('.');
MessageBox.Show(hours[0].ToString() + ":" + minutes[0].ToString() + ":" + seconds[0].ToString() + "." + milliseconds[0].ToString());

首先,需要创建一个秒表对象。

private readonly Stopwatch stopwatch = new Stopwatch();

然后,你的方法:

public void MyMethod()
{
    stopwatch.Start();
    // Any other code here.
    stopwatch.Stop();
    //returns longs
    long runningTimeInMs = stopwatch.ElapsedMilliseconds;
}