public void WithReadLockSlimNullActionTest() { var l = new ReaderWriterLockSlim(); l.WithReadLock(null); }
public void WithReadLockSlimWithExceptionTest() { var l = new ReaderWriterLockSlim(); Assert.IsFalse(l.IsReadLockHeld); var thrown = false; try { l.WithReadLock(() => { Assert.IsTrue(l.IsReadLockHeld); throw new InvalidOperationException(); }); } catch (InvalidOperationException) { thrown = true; } Assert.IsFalse(l.IsReadLockHeld); Assert.IsTrue(thrown); }
public void WithReadLockSlimTimeoutWithExceptionTest() { var l = new ReaderWriterLockSlim(); var e = new AutoResetEvent(false); var t = new Thread(() => { var b = false; try { l.WithReadLock(() => { Assert.IsTrue(l.IsReadLockHeld); throw new InvalidOperationException(); }, TimeSpan.FromSeconds(5)); } catch (InvalidOperationException) { b = true; } Assert.IsTrue(b); e.Set(); }); l.EnterWriteLock(); t.Start(); Thread.Sleep(1000); Assert.AreEqual(l.WaitingReadCount, 1); l.ExitWriteLock(); e.WaitOne(); Assert.IsFalse(l.IsReadLockHeld); }
public void WithReadLockSlimTimeoutSuccessTest() { var l = new ReaderWriterLockSlim(); var e= new AutoResetEvent(false); var t = new Thread(() => { l.WithReadLock(() => { Assert.IsTrue(l.IsReadLockHeld); }, TimeSpan.FromSeconds(5)); e.Set(); }); l.EnterWriteLock(); t.Start(); Thread.Sleep(1000); Assert.AreEqual(l.WaitingReadCount, 1); l.ExitWriteLock(); e.WaitOne(); Assert.IsFalse(l.IsReadLockHeld); }
public void WithReadLockSlimTimeoutNullActionTest() { var l = new ReaderWriterLockSlim(); l.WithReadLock(null, TimeSpan.Zero); }
public void WithReadLockSlimSuccessTest() { var l = new ReaderWriterLockSlim(); Assert.IsFalse(l.IsReadLockHeld); l.WithReadLock(()=> {Assert.IsTrue(l.IsReadLockHeld);}); Assert.IsFalse(l.IsReadLockHeld); }