30.3 FCL中的混合构造

 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();
        }
    }
原文地址:https://www.cnblogs.com/kikyoqiang/p/10229360.html