示例#1
0
        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);
        }