private object TryAddInternal( RegistryChangedEventHandler handler, RegistryChangedEventArgs args, out bool needNewThread ) { WatchEntry newEntry; needNewThread = false; lock (_eventsLock) { if (_entries.Count >= MAXIMUM_WAIT_OBJECTS) { needNewThread = true; return(null); } newEntry = WatchEntry.TryCreate(handler, args); if (newEntry == null) { return(null); } _entries.Add(newEntry); } _itemAdded.Set(); return(newEntry); }