Si desea facilidad de uso:
Si no tiene requisitos de exactitud (exactitud fuertes verdadero nivel de milisegundos - tales como escribir un alto fotogramas por segundo videojuego o simulación en tiempo real similar), entonces simplemente puede utilizar la estructura 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...
}
Cambie TimeSpan.FromMinutes
para que sea el período de tiempo que requiera, segundos, minutos, etc.
En el caso de llamar a algo así como un servicio web, mostrar algo al usuario durante un corto período de tiempo o verificar archivos en disco , Usaría esto exclusivamente.
Si desea una mayor precisión:
vistazo a la clase Stopwatch
, y comprobar el miembro Elapsed
. Es un poco más difícil de usar, porque tienes que iniciarlo, y it has some bugs which will cause it to sometimes go negative, pero es útil si necesitas una precisión real de milisegundos.
Para usarlo:
var stopwatch = new Stopwatch();
stopwatch.Start();
while(stopwatch.Elapsed < TimeSpan.FromSeconds(5))
{
// Execute your loop here...
}
'DateTime.Now' es lento (aproximadamente 1000ns en mi máquina). Debería usar 'DateTime.UtcNow' en su lugar porque es aproximadamente 100 veces más rápido debido a que no tiene que realizar una conversión de zona horaria. – Gabe
@Gabe: Buena información. Gracias por enseñarme algo :) Editar la respuesta ... –