visual tiempo temporizador studio sirve regresiva que para metodo hacer ejemplo ejecutar cuenta cronometro consola como cierto cada c# .net stopwatch

c# - tiempo - ¿Debo detener el cronómetro al final del método?



stopwatch c# (5)

Imaginemos que tenemos mediciones simples usando Stopwatch

public void DoWork() { var timer = Stopwatch.StartNew(); // some hard work Logger.Log("Time elapsed: {0}", timer.Elapsed); timer.Stop(); // Do I need to call this? }

Según MSDN:

En un escenario típico de cronómetro, usted llama el método de inicio, luego , finalmente, el método de parada , y luego verifica el tiempo transcurrido usando la propiedad de tiempo transcurrido.

No estoy seguro de si debería llamar a este método cuando ya no estoy interesado con la instancia del temporizador. ¿Debo "aclarar" usando el método Stop ?

EDITAR

Tenga en cuenta que Logger.Log (..) no cuesta nada porque timer.Elapsed se lee antes de que el logger timer.Elapsed sesión.


Creo que Stop es útil si desea reutilizar el valor Elapsed.


Debes detener el cronómetro antes de que llegue el tiempo de Elapased.

static void Main() { // Create new stopwatch Stopwatch stopwatch = new Stopwatch(); // Begin timing stopwatch.Start(); // Do something for (int i = 0; i < 1000; i++) { Thread.Sleep(1); } // Stop timing stopwatch.Stop(); // Write result Console.WriteLine("Time elapsed: {0}", stopwatch.Elapsed); }


No, no hay necesidad de detenerlo o limpiarlo.

Stopwatch no usa ningún recurso no administrado (si piensa en IDisposable ). En realidad, no utiliza ningún recurso en absoluto!

En las implementaciones de Windows de .NET (.NET Framework completo, Mono, .NET Core), solo llama al API de Windows QueryPerformanceCounter() cuando es necesario (en Start() y en Stop() y cuando se lee en Elapsed ) para recuperar un tiempo de alta resolución sello.

En las implementaciones de Linux de Mono y .NET Core, utiliza la función clock_gettime para recuperar un valor de tiempo creciente monótono.

Para cualquier persona con curiosidad real sobre los detalles de la implementación: lea esta publicación .


No, no necesitas pararlo. Stop() simplemente detiene el seguimiento del tiempo transcurrido. No libera recursos.


//disposable StopWatch internal class StopWatch :Stopwatch, IDisposable { public StopWatch() { Start(); } private string _name; public string Name { get => _name; set => _name = $"{value} "; } public void Dispose() { Stop(); Debug.Print(string.Format("{0}RunTime {1:00}:{2:00}:{3:00}.{4:00}", Name, Elapsed.Hours, Elapsed.Minutes,Elapsed.Seconds, Elapsed.Milliseconds / 10)); } } //Use example internal class SomeClass { private static void Some() { using (var stopWatch = new StopWatch()) { // Do something for (int i = 0; i < 1000; i++) { Thread.Sleep(1); } } } }