Stellen wir uns vor, wir haben einfache Messungen mit 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?
}
Laut MSDN:
In einem typischen Stoppuhrszenario rufen Sie die Start-Methode auf, rufen schließlich die Stop-Methode auf und überprüfen dann die verstrichene Zeit mithilfe der Elapsed-Eigenschaft.
Ich bin mir nicht sicher, ob ich diese Methode aufrufen soll, wenn ich mich nicht mehr für die Timer-Instanz interessiere. Soll ich mit der Stop
Methode "aufräumen" ?
BEARBEITEN
Beachten Sie, dass Logger.Log (..) nichts kostet, da timer.Elapsed
es gelesen wird, bevor der Logger protokolliert.
Stop
Methode verhindert unachtsame Fehler, beispielsweise wenn Sie dieElapsed
Eigenschaft mehrmals bewerten .Stop
einen Unterschied machen würde, da der Timer nicht mehr funktioniert? Sie können den Wert sowieso nicht verwendenAntworten:
Nein, du musst es nicht aufhalten.
Stop()
hört einfach auf, die verstrichene Zeit zu verfolgen. Es werden keine Ressourcen freigesetzt.quelle
Nein, es ist nicht nötig, es anzuhalten oder aufzuräumen.
Stopwatch
verwendet keine nicht verwalteten Ressourcen (wenn Sie daran gedacht habenIDisposable
). Es werden tatsächlich überhaupt keine Ressourcen verwendet (außer natürlich dem vom Objekt selbst verwendeten Speicher)! Es verbraucht auch keine CPU, während die verstrichene Zeit gemessen wird!In Windows - Implementierungen von .NET (full .NET Framework, Mono, .NET Core), ruft nur die
QueryPerformanceCounter()
Windows - API bei Bedarf (aufStart()
undStop()
und beim LesenElapsed
) eine hohe Auflösung Zeitstempel abzurufen.In Linux-Implementierungen von Mono und .NET Core wird die
clock_gettime
Funktion verwendet, um einen monoton ansteigenden Zeitwert abzurufen.Für alle, die wirklich neugierig auf die Implementierungsdetails sind: Lesen Sie diesen Beitrag .
quelle
Ich denke, Stop ist nützlich, wenn Sie den abgelaufenen Wert wiederverwenden möchten.
quelle
Wenn Ihr Code nicht berechnet werden muss, müssen Sie Stop () nicht verwenden.
quelle