c#检测某些动作时间的最佳方法

c#检测某些动作时间的最佳方法,c#,datetime,C#,Datetime,我试着做到以下几点: public class TimerTest { private DateTime start; public TimerTest() { start = DateTime.Now; } public TimerTest(string message) { Debug.WriteLine("DEBUG: " +

我试着做到以下几点:

    public class TimerTest
    {
        private DateTime start;

        public TimerTest()
        {
            start = DateTime.Now;
        }

        public TimerTest(string message)
        {
            Debug.WriteLine("DEBUG: " + message);
        }

        public void Finish(string message)
        {
            var time = DateTime.Now - start;

            var timeWent = String.Format("{0}.{1} sec.", time.Seconds, time.Milliseconds.ToString().PadLeft(3, '0'));

但看起来这是错误的…

我认为部分问题在于您没有为每个呼叫实例化新的开始时间,所以您只是记录了与实例化时间的差异

如果您真的想获得代码执行所需时间的准确读数,更好的选项之一是Stopwatch类,如下所述:


构造函数重载

public TimerTest(string message)
{
    Debug.WriteLine("DEBUG: " + message);
}
甚至不初始化时间变量。你是说这个构造器是

public TimerTest(string message)
{
    Debug.WriteLine("DEBUG: " + message);
    start = DateTime.Now;
}

我不知道你在问什么。根据你的代码,我希望得到输出。你能写出你认为输出应该是什么吗?请注意,这是一种糟糕的性能度量方法,请改用秒表。
DateTime
没有足够的精度来测量这么小的时间差。@Servy:我很惊讶他能看到1ms的时间差。我认为计时器的分辨率是几毫秒。“所以你只是记录了与时间实例化时的差异。”——正是我需要的!TimerTest的init和Finish()方法调用之间的时间差。但结果显示完全错误。很高兴听到这一点。如果您认为我回答了您的问题,请记住将其标记为答案。@Andrew您可以编辑您的问题,使其与已接受的答案一致吗。否则,很难看到这篇文章如何回答这个问题。再加上OP使用的是
TimeSpan.Seconds
而不是
TimeSpan.TotalSeconds
这一事实,解释了结果。yew!所以这是我的错!谢谢!是的。只要OP不想让某件事的时间超过一分钟。正如maniak所说,真正意义上的System.Diagnostics.Stopwatch是一个不错的选择。在这里重新发明轮子。