如何在特定时间执行循环

New*_*Dev 26 c#

如何在指定时间内执行特定循环

Timeinsecond = 600

int time = 0;
while (Timeinsecond > time)
{
   // do something here
}
Run Code Online (Sandbox Code Playgroud)

如何在这里设置时间变量,如果我可以使用Timer对象的启动和停止方法,它不会在几秒钟内返回时间

关心NewDev

sTo*_*rov 57

可能以下将有所帮助:

  Stopwatch s = new Stopwatch();
  s.Start();
  while (s.Elapsed < TimeSpan.FromSeconds(600)) 
  {
      //
  }

  s.Stop();
Run Code Online (Sandbox Code Playgroud)


Mer*_*ham 24

如果你想要易用性:

如果您没有很高的精度要求(真正的毫秒级精度 - 例如每秒写高帧数视频游戏,或类似的实时模拟),那么您可以简单地使用以下System.DateTime结构:

// Could use DateTime.Now, but we don't care about time zones - just elapsed time
// Also, UtcNow has slightly better performance
var startTime = DateTime.UtcNow;

while(DateTime.UtcNow - startTime < TimeSpan.FromMinutes(10))
{
    // Execute your loop here...
}
Run Code Online (Sandbox Code Playgroud)

更改TimeSpan.FromMinutes为您需要的任何时间段,秒,分钟等.

如果调用类似Web服务的东西,在短时间内向用户显示内容,或者检查磁盘上的文件,我会专门使用它.

如果您想要更高的准确度:

看看Stopwatch班级,并检查Elapsed会员.它稍微难以使用,因为你必须启动它,并且它有一些错误会导致它有时变为负数,但是如果你需要真正的毫秒级精度则它很有用.

要使用它:

var stopwatch = new Stopwatch();
stopwatch.Start();

while(stopwatch.Elapsed < TimeSpan.FromSeconds(5))
{
    // Execute your loop here...
}
Run Code Online (Sandbox Code Playgroud)

  • `DateTime.Now`很慢(我机器上大约1000ns).您应该使用`DateTime.UtcNow`,因为它不需要执行时区转换,速度大约快100倍. (9认同)