30.3.2 Monitor类和同步块
internal sealed class Transaction { private readonly object _lock = new object(); private DateTime _timeOfLastTrans; public void PerformTransaction() { Monitor.Enter(_lock); //数据拥有对数据的独占访问权 _timeOfLastTrans = DateTime.Now; Monitor.Exit(_lock); } public DateTime LastTransaction { get { Monitor.Enter(_lock); //数据拥有对数据的独占访问权 DateTime temp = _timeOfLastTrans; Monitor.Exit(_lock); return temp; } } }
30.3.3 ReaderWriterLockSlim类
internal sealed class Transaction : IDisposable { private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim(LockRecursionPolicy.NoRecursion); private DateTime _timeOfLastTrans; public void PerformTransaction() { _lock.EnterWriteLock(); //数据拥有对数据的独占访问权 _timeOfLastTrans = DateTime.Now; _lock.ExitWriteLock(); } public DateTime LastTransaction { get { _lock.EnterReadLock(); //数据拥有对数据的独占访问权 DateTime temp = _timeOfLastTrans; _lock.ExitReadLock(); return temp; } } public void Dispose() { _lock.Dispose(); } }