public ClientEvent[] GetClientEvents(Func<ClientEvent, bool> predicate) { _clientEventsRWLS.EnterReadLock(); try { return _clientEvents.Values.Where(predicate).ToArray(); } finally { _clientEventsRWLS.ExitReadLock(); } }