/// <summary> /// Attempts to break the circuit /// </summary> public void TryBreak(Exception ex) { using (TimedLock.Lock(_lock)) { _lastException = ex; _count += 1; if (_count >= _exceptionsAllowedBeforeBreaking) { BreakTheCircuit(); } } }
public static TimedLock Lock(object o, TimeSpan timeout) { TimedLock tl = new TimedLock(o); if (!Monitor.TryEnter(o, timeout)) { #if DEBUG System.GC.SuppressFinalize(tl.leakDetector); #endif throw new LockTimeoutException(); } return(tl); }