Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 秒表时间总是零_C#_Stopwatch - Fatal编程技术网

C# 秒表时间总是零

C# 秒表时间总是零,c#,stopwatch,C#,Stopwatch,我在代码中实现了一个计算,电脑将0到99999999之间的所有数字相加,并输出结果。此过程在按下按钮和屏幕上显示答案之间需要几秒钟的时间。现在我想有一个秒表或计时器,当我按下按钮时,它开始和停止,每当答案出现在屏幕上,告诉我它花了多长时间。下面是我实现的,但是我被“00:00:00”击中了。我是否错误地认为,它只是在按下按钮后启动,然后循环停止和显示时间 if (GUI.Button(new Rect(100, 275, 300, 25), "Add All numbers between 1

我在代码中实现了一个计算,电脑将0到99999999之间的所有数字相加,并输出结果。此过程在按下按钮和屏幕上显示答案之间需要几秒钟的时间。现在我想有一个秒表或计时器,当我按下按钮时,它开始和停止,每当答案出现在屏幕上,告诉我它花了多长时间。下面是我实现的,但是我被“00:00:00”击中了。我是否错误地认为,它只是在按下按钮后启动,然后循环停止和显示时间

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