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) { } }
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); }
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) { } }