Imaginemos que tenemos medidas 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 Stopwatch, llama al método Start, luego llama al método Stop , y luego verifica el tiempo transcurrido usando la propiedad Elapsed.
No estoy seguro de si debería llamar a este método cuando ya no estoy interesado en la instancia del temporizador. ¿Debo "aclarar" usando el Stopmétodo?
EDITAR
Tenga en cuenta que Logger.Log (..) no cuesta nada porque timer.Elapsedse lee antes de que el registrador registre.

Stopmétodo evita que cometa errores por descuido, por ejemplo, si está evaluando laElapsedpropiedad varias veces.Stopharía alguna diferencia? No puede usar el valor de todos modosRespuestas:
No, no necesitas detenerlo.
Stop()simplemente deja de rastrear el tiempo transcurrido. No libera recursos.fuente
No, no es necesario detenerlo ni limpiarlo.
Stopwatchno utiliza ningún recurso no administrado (si lo pensóIDisposable). En realidad, no utiliza ningún recurso (excepto la memoria utilizada por el objeto en sí, por supuesto). ¡Tampoco consume CPU mientras mide el tiempo transcurrido!En Windows implementaciones de .NET (.NET Framework completo, Mono, .NET Core), que sólo llama a la
QueryPerformanceCounter()API de Windows cuando sea necesario (enStart()yStop()y al leerElapsed) para recuperar un sello de tiempo de alta resolución.En las implementaciones de Linux de Mono y .NET Core, usa la
clock_gettimefunción para recuperar un valor de tiempo creciente monótono.Para cualquiera que tenga una verdadera curiosidad sobre los detalles de implementación: lea esta publicación .
fuente
Creo que Detener es útil si desea reutilizar el valor Transcurrido.
fuente
Si su código no necesita ser calculado, entonces no necesita usar Stop ().
fuente