C# 秒表时间总是零
我在代码中实现了一个计算,电脑将0到99999999之间的所有数字相加,并输出结果。此过程在按下按钮和屏幕上显示答案之间需要几秒钟的时间。现在我想有一个秒表或计时器,当我按下按钮时,它开始和停止,每当答案出现在屏幕上,告诉我它花了多长时间。下面是我实现的,但是我被“00:00:00”击中了。我是否错误地认为,它只是在按下按钮后启动,然后循环停止和显示时间C# 秒表时间总是零,c#,stopwatch,C#,Stopwatch,我在代码中实现了一个计算,电脑将0到99999999之间的所有数字相加,并输出结果。此过程在按下按钮和屏幕上显示答案之间需要几秒钟的时间。现在我想有一个秒表或计时器,当我按下按钮时,它开始和停止,每当答案出现在屏幕上,告诉我它花了多长时间。下面是我实现的,但是我被“00:00:00”击中了。我是否错误地认为,它只是在按下按钮后启动,然后循环停止和显示时间 if (GUI.Button(new Rect(100, 275, 300, 25), "Add All numbers between 1
if (GUI.Button(new Rect(100, 275, 300, 25), "Add All numbers between 1 and 999999999"))
{
AddAllNumbersMax();
stopWatch.Start();
}
}
GUI.TextArea(new Rect(275, 100, 300, 300), _messageLog);
}
void AddAllNumbersMax()
{
int max = 999999999;
double result = 0;
for (int i = 0; i<=max; i++)
{
result += i;
}
_messageLog += result + "\n";
stopWatch.Stop ();
_messageLog += stopWatch.Elapsed;
}
if(GUI.按钮(新Rect(10027530025),“添加1到99999999之间的所有数字”))
{
AddAllNumbersMax();
秒表。开始();
}
}
TextArea(新的Rect(275100300300),\u messageLog);
}
void AddAllNumbersMax()
{
int max=99999999;
双结果=0;
对于(int i=0;i
这将首先执行AddAllNumbersMax
——它依次调用stopWatch.Stop()
,读取经过的时间,然后才开始计时
如果您要测量时间AddAllNumbersMax
的话,最好也在那里启动秒表。或者将整个秒表业务从方法中移出,并将其放在调用中。在启动秒表之前停止秒表
尝试:
if(GUI.按钮(新Rect(10027530025),“添加1到99999999之间的所有数字”))
{
秒表。开始();
AddAllNumbersMax();
}
TextArea(新的Rect(275100300300),\u messageLog);
}
void AddAllNumbersMax()
{
int max=99999999;
双结果=0;
对于(int i=0;i如果我理解正确,您需要测量AddAllNumbersMax()的运行时间,在这种情况下,您必须在方法调用之前启动秒表,然后停止它:
if (GUI.Button(new Rect(100, 275, 300, 25), "Add All numbers between 1 and 999999999"))
{
stopWatch.Start();
AddAllNumbersMax();
stopWatch.Stop();
// Do something with elapsed time
}
这很明显,因为程序首先要执行AddAllNumberMax(),当此操作结束时,应用程序将启动计时器。
你应该这样做:
stopWatch.Start();
AddAllNumbersMax();
stopWatch.Stop();
考虑一下当您启动秒表时与计算相关的情况……您调用AddAllNumbersMax()停止秒表,然后启动秒表。感谢您的快速回复!有意义:)
if (GUI.Button(new Rect(100, 275, 300, 25), "Add All numbers between 1 and 999999999"))
{
stopWatch.Start();
AddAllNumbersMax();
stopWatch.Stop();
// Do something with elapsed time
}
stopWatch.Start();
AddAllNumbersMax();
stopWatch.Stop();