多線程下操做數字要用類System.Threading.Interlocked

public class ServiceStatistics
{
private int _sourseCount = 0;
/// <summary>
/// 處理源數據量
/// </summary>
public int SourseCount
{
get { return _sourseCount; }
}
private int _destinationCount = 0;
/// <summary>
/// 返回結果數據量
/// </summary>
public int DestinationCount
{
get { return _destinationCount; }
}

private long _elapsedMilliseconds = 0L;
/// <summary>
/// 執行耗時
/// </summary>
public long ElapsedMilliseconds
{
get { return _elapsedMilliseconds; }
}
/// <summary>
/// 增長源數據量
/// </summary>
/// <param name="count"></param>
public void IncrementSourse(int count = 1)
{
if (count < 1)
return;
System.Threading.Interlocked.Add(ref _sourseCount, count);
}
/// <summary>
/// 增長結果數據量
/// </summary>
/// <param name="count"></param>
public void IncrementDestination(int count = 1)
{
if (count < 1)
return;
System.Threading.Interlocked.Add(ref _destinationCount, count);
}
/// <summary>
/// 增長執行耗時
/// </summary>
/// <param name="milliseconds"></param>
public void Elapsed(long milliseconds)
{
if (milliseconds < 1L)
return;
System.Threading.Interlocked.Add(ref _elapsedMilliseconds, milliseconds);
}
相關文章
相關標籤/搜索