【发布时间】:2010-11-08 14:32:03
【问题描述】:
我有一个静态计时器类,任何网页都会调用它来计算每个页面构建所需的时间。
我的问题是静态类线程安全吗?在我的示例中,并发用户会导致我的开始和停止时间出现问题吗?例如,不同的线程会覆盖我的开始和停止值。
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;
}
}
这个类应该是一个非静态类吗?
(该类将从 asp.net 母版页调用。)
【问题讨论】:
-
MSDN:“虽然一个类的实例包含该类所有实例字段的单独副本,但每个静态字段只有一个副本。”