Dispose() public method

public Dispose ( ) : void
return void
        public void Dispose_Errors()
        {
            var v = new ReaderWriterLockSlim();
            v.Dispose();

            try
            {
                v.EnterUpgradeableReadLock();
                Assert.Fail("1");
            }
            catch (ObjectDisposedException)
            {
            }

            try
            {
                v.EnterReadLock();
                Assert.Fail("2");
            }
            catch (ObjectDisposedException)
            {
            }

            try
            {
                v.EnterWriteLock();
                Assert.Fail("3");
            }
            catch (ObjectDisposedException)
            {
            }
        }
Example #2
0
 private void Dispose()
 {
     if (m_ReadWriterLock != null)
     {
         m_ReadWriterLock.Dispose();
         m_ReadWriterLock = null;
     }
 }
 protected void Dispose(bool disposing)
 {
     // Check to see if Dispose has already been called.
     if (!disposed)
     {
         m_itemLock.Dispose();
         m_itemLock = null;
         disposed   = true;
     }
 }
        public void ExitsWriteLock()
        {
            var slim = new ReaderWriterLockSlim();

            var token = slim.Read();
            token.Dispose();
            Assert.IsFalse(slim.IsReadLockHeld);

            slim.Dispose();
        }
        public void EntersWriteLock()
        {
            var slim = new ReaderWriterLockSlim();

            var token = slim.Write();
            Assert.IsTrue(slim.IsWriteLockHeld);
            slim.ExitWriteLock();

            slim.Dispose();
        }
        public static void Dispose()
        {
            ReaderWriterLockSlim rwls;

            rwls = new ReaderWriterLockSlim();
            rwls.Dispose();
            Assert.Throws<ObjectDisposedException>(() => rwls.TryEnterReadLock(0));
            Assert.Throws<ObjectDisposedException>(() => rwls.TryEnterUpgradeableReadLock(0));
            Assert.Throws<ObjectDisposedException>(() => rwls.TryEnterWriteLock(0));
            rwls.Dispose();

            for (int i = 0; i < 3; i++)
            {
                rwls = new ReaderWriterLockSlim();
                switch (i)
                {
                    case 0: rwls.EnterReadLock(); break;
                    case 1: rwls.EnterUpgradeableReadLock(); break;
                    case 2: rwls.EnterWriteLock(); break;
                }
                Assert.Throws<SynchronizationLockException>(() => rwls.Dispose());
            }
        }
 public void CantAqureLock()
 {
     var l = new ReaderWriterLockSlim();
     var e = new AutoResetEvent(false);
     var t = new Thread(() =>
     {
         var b =l.TryEnterWriteLock(TimeSpan.FromSeconds(1));
         Assert.IsTrue(b);
         e.Set();
         Thread.Sleep(TimeSpan.FromMinutes(10));
         l.Dispose();
     });
     t.Start();
     e.WaitOne();
     var a = new DisposableReaderWriterLockSlim(l, TimeSpan.FromSeconds(3), SlimLockMode.Write);
 }
Example #8
0
        public void Dispose()
        {
            if (!_disposed)
            {
                lock (_desposingObj)
                {
                    if (!_disposed)
                    {
                        Clear();
                        locker.Dispose();

                        valueList = null;
                        keyList   = null;

                        _disposed = true;
                    }
                }
            }
        }
 public void Dispose_UpgradeableReadLock()
 {
     var rwl = new ReaderWriterLockSlim();
     rwl.EnterUpgradeableReadLock();
     try
     {
         rwl.Dispose();
         Assert.Fail("1");
     }
     catch (SynchronizationLockException)
     {
     }
 }