Exemplo n.º 1
0
        public static void Unload(string dll)
        {
            object obj;

            Monitor.Enter(obj = PluginReference.syncObject);
            try
            {
                IPluginDomainConnector domain = PluginFactory.Container.GetDomain(dll);
                foreach (KeyValuePair <string, IPluginConnector> current in domain.Plugins)
                {
                    if (PluginReference.instances.ContainsKey(current.Key))
                    {
                        PluginReference.instances.Remove(current.Key);
                    }
                }
                PluginFactory.Container.Unload(dll);
            }
            finally
            {
                Monitor.Exit(obj);
            }
        }
Exemplo n.º 2
0
        public void AddDomain(string key, IPluginDomainConnector item)
        {
            object syncObject;

            Monitor.Enter(syncObject = PluginContainer._syncObject);
            try
            {
                if (!this.domainContainer.ContainsKey(key))
                {
                    this.domainContainer.Add(key, item);
                }
                foreach (KeyValuePair <string, IPluginConnector> current in item.Plugins)
                {
                    if (!this.pluginContainer.ContainsKey(current.Key))
                    {
                        this.pluginContainer.Add(current);
                    }
                }
            }
            finally
            {
                Monitor.Exit(syncObject);
            }
        }