Exemplo n.º 1
0
        /// <summary>
        /// Unregisters item and returns true if it was unregistered, false if it did not exist
        /// </summary>
        public bool Unregister(T item)
        {
            lock (m_Sync)
            {
                if (!m_Data.ContainsKey(item.Name))
                {
                    return(false);
                }

                var data = new RegistryDictionary <T>(m_CaseSensitive, m_Data);
                data.Remove(item.Name);

                JustUnregistered(item);

                m_Data = data; //atomic
            }

            return(true);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Unregisters item by name and returns true if it was unregistered, false if it did not exist
        /// </summary>
        public bool Unregister(string name)
        {
            lock (m_Sync)
            {
                T item;
                if (!m_Data.TryGetValue(name, out item))
                {
                    return(false);
                }

                var data = new RegistryDictionary <T>(m_CaseSensitive, m_Data);
                data.Remove(name);

                JustUnregistered(item);

                m_Data = data; //atomic
            }

            return(true);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Unregisters item and returns true if it was unregistered, false if it did not exist
        /// </summary>
        public bool Unregister(T item)
        {
            ((object)item).NonNull(nameof(item));

            lock (m_Sync)
            {
                if (!m_Data.ContainsKey(item.Name))
                {
                    return(false);
                }

                var data = new RegistryDictionary <T>(m_CaseSensitive, m_Data);
                data.Remove(item.Name);

                JustUnregistered(item);

                Thread.MemoryBarrier();
                m_Data = data; //atomic
            }

            return(true);
        }