如何使秒表可见? C#
How to make stopwatch visible? C#
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();
写入控制台值,例如:
0.520
0.801
1.255
但不是这样,它归结为:
0.000
0.000
0.000
0.000
0.000
像无限数组
您需要使用 GetElapsed() 方法定义 class。按下某个键时调用 GetElapsed。
但这开始回避问题,如果您真的只是在模拟方法,为什么要包装 class?
是的,按照 hakanshehu 的建议直接使用 class,包装它是一种浪费。
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());
}
}
}
发生这种情况是因为每次调用 stopwatch() 方法时它都会创建一个新的秒表实例并从 0 开始。
更好的方法是在 main 方法中创建一个秒表实例,在 for 循环之前启动它,并在 for 循环中调用秒表经过的时间。
一个简单的代码
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
的同一个实例,在您按下按键后,计时器应该再次计时。所以试试这个代码,
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;
}
希望有所帮助,
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();
写入控制台值,例如:
0.520
0.801
1.255
但不是这样,它归结为:
0.000
0.000
0.000
0.000
0.000
像无限数组
您需要使用 GetElapsed() 方法定义 class。按下某个键时调用 GetElapsed。
但这开始回避问题,如果您真的只是在模拟方法,为什么要包装 class? 是的,按照 hakanshehu 的建议直接使用 class,包装它是一种浪费。
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());
}
}
}
发生这种情况是因为每次调用 stopwatch() 方法时它都会创建一个新的秒表实例并从 0 开始。
更好的方法是在 main 方法中创建一个秒表实例,在 for 循环之前启动它,并在 for 循环中调用秒表经过的时间。
一个简单的代码
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
的同一个实例,在您按下按键后,计时器应该再次计时。所以试试这个代码,
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;
}
希望有所帮助,