public void TryWithLockAction_ExceptionInAcquire_ThrowLockException() { // setup var semaphore = new SemaphoreSlim(1); var value = new List(); var subject = new AsyncSynchronized <List>(semaphore, value); semaphore.Dispose(); // act and assert var exception = Should.Throw <LockException>(() => subject.TryWithLock((v) => { })); exception.InnerException.ShouldBeOfType <ObjectDisposedException>(); }