The change we did yesterday makes it possible to remove the use of helper threads and timeouts for the MutexLock tests. Here is a first refactoring:

1: public class Given_an_abandoned_lock 2: { 3: private class MutexWrapperAlwaysAbandoned : MutexWrapper 4: { 5: public new void WaitOne() 6: { 7: throw new AbandonedMutexException(); 8: } 9: } 10:   11: private MutexLock<MutexWrapperAlwaysAbandoned> _lock; 12: 13: public Given_an_abandoned_lock() 14: { 15: _lock = new MutexLock<MutexWrapperAlwaysAbandoned>(); 16: } 17:   18: [Fact] 19: void It_should_be_possible_to_take_lock_when_thread_dies() 20: { 21: Assert.DoesNotThrow(() => { _lock.Lock(); }); 22: } 23: }