public bool TryDequeue(out Envelope envelope) { Monitor.TryEnter(_lock, BlockTimeOut); try { return LockedTryDequeue(out envelope); } finally { Monitor.Exit(_lock); } }