private void OnTransactionComplete() { lock (newMessageArrivedLock) { Monitor.PulseAll(newMessageArrivedLock); } Interlocked.Decrement(ref currentlyInsideTransaction); }