Ich habe eine statische Timer-Klasse, die von jeder Webseite aufgerufen wird, um zu berechnen, wie lange jede Seite aufgebaut werden muss.Sind statische Methoden Thread sicher
Meine Frage ist sind statische Klassen Thread Safe? In meinem Beispiel verursachen gleichzeitige Benutzer ein Problem mit meinen Start- und Stoppzeiten? Beispielsweise überschreiben andere Threads meine Start- und Stoppwerte.
public static class Timer
{
private static DateTime _startTime;
private static DateTime _stopTime;
/// <summary>
/// Gets the amount of time taken in milliseconds
/// </summary>
/// <returns></returns>
public static decimal Duration()
{
TimeSpan duration = _stopTime - _startTime;
return duration.Milliseconds;
}
public static void Start()
{
_startTime = DateTime.Now;
}
public static void Stop()
{
_stopTime = DateTime.Now;
}
}
Sollte diese Klasse eine nicht statische Klasse sein?
(Diese Klasse von der asp.net Masterpage genannt wird.)
MSDN: „Während eine Instanz einer Klasse eine separate Kopie aller Instanzfelder der Klasse enthält, gibt es nur eine Kopie jedes statische Feld.“ – colithium