如何使秒表可见?C#

如何使秒表可见?C#,c#,timer,stopwatch,C#,Timer,Stopwatch,因此,我想制作一个程序,每当我按下按钮时,它将从Stopwatch()写入控制台值使用此顺序,例如: 0.520 0.801 1.255 但事实并非如此,而是归结为: 0.000 0.000 0.000 0.000 0.000 与infinite array类似您需要使用getAppeased()方法定义一个类。按下某个键时调用GetExpressed 但这就引出了一个问题,如果你真的只是在模仿这些方法,为什么要包装这个类呢? 是的,就像hakanshehu建议的那样直接使用这个类,包装它是一种

因此,我想制作一个程序,每当我按下按钮时,它将从
Stopwatch()写入控制台值使用此顺序,例如:

0.520

0.801

1.255

但事实并非如此,而是归结为:

0.000

0.000

0.000

0.000

0.000


与infinite array类似

您需要使用getAppeased()方法定义一个类。按下某个键时调用GetExpressed

但这就引出了一个问题,如果你真的只是在模仿这些方法,为什么要包装这个类呢? 是的,就像hakanshehu建议的那样直接使用这个类,包装它是一种浪费

public static string stopwatch()
    {
        Stopwatch stopWatch = new Stopwatch();
        stopWatch.Start();
        // Get the elapsed time as a TimeSpan value.
        TimeSpan ts = stopWatch.Elapsed;
        // Format and display the TimeSpan value.
        String elapsedTime = String.Format("{0:0}.{1:000}", ts.Seconds, ts.Milliseconds / 1000);
        return elapsedTime;
    }

    static void Main(string[] args)
    {
        string elptime = stopwatch();
        for (Console.ReadKey(true); ;)
        {
            Console.WriteLine(elptime);
        }
    }
}

这是因为每次调用stopwatch()方法时,它都会创建一个新的stopwatch实例,并从0开始

更好的方法是在main方法中创建一个Stopwatch实例,在for循环之前启动它,并在for循环中调用Stopwatch的运行时间

简单代码

public class MyStopWatch
    {
        Stopwatch stopWatch;
        public MyStopWatch()
        {
          stopWatch = new Stopwatch();
          stopWatch.Start();
        }
        public String GetElapsed()
        {
            TimeSpan ts = stopWatch.Elapsed;
            // Format and display the TimeSpan value.
            return String.Format("{0:0}.{1:000}", ts.Seconds, ts.Milliseconds / 1000);
        }

    }

    static void Main(string[] args)
    {
        MyStopWatch msw = new MyStopWatch();
        for (Console.ReadKey(true); ;)
        {
            Console.WriteLine(msw.GetElapsed());
        }
    }
}

您应该使用与秒表相同的实例,在按下键后,计时器应再次滴答作响。那么试试这个代码

static void Main(string[] args)
{
    Stopwatch stopWatch = new Stopwatch();
    stopWatch.Start();
    for (Console.ReadKey(true); ;)
    {
        TimeSpan ts = stopWatch.Elapsed;
        String elapsedTime = String.Format("{0:0}.{1:000}", ts.Seconds, ts.Milliseconds / 1000);
        Console.WriteLine(elapsedTime);
    }
}

希望有帮助,

每次调用
stopwatch
都会启动一个新的stopwatch实例,您应该重新使用它。此外,您没有多次调用
stopwatch
。您只需检查“已用时间”一次,并将结果存储在一个变量中,然后反复打印即可。如果要获取更新的时间,需要再次从
Stopwatch
实例获取。不能调用
Stopwatch.Start()直接在那里,这将给出错误。更新,谢谢@BerkayWorks,但毫秒不可见。我得到的数字比如:1.000,1.000,2.000,3.000,5.000…为什么要把毫秒除以1000@MayketiSolved,非常感谢!
static Stopwatch watch = new Stopwatch();
        static void Main(string[] args)
        {
            while (true)
            {
                startWatch();
                for (Console.ReadKey(true); ;)
                {
                    string elptime = stopwatch();
                    Console.WriteLine(elptime);
                    break; // to exit for and startWatch() again.
                }
            }
        }

        static public void startWatch()
        { 
            watch.Start();
        }
        public static string stopwatch()
        {
            String elapsedTime = "";
            TimeSpan ts = watch.Elapsed;
            elapsedTime = String.Format("{0:0}.{1:000}", ts.Seconds, ts.Milliseconds / 1000);
            return elapsedTime;
        }