Example #1
0
        public bool Deactivate(bool deactivateDependencies)
        {
            if (!IsActive)
            {
                return(true);
            }

            //check all successors -> these are the ones which depends on actual plugin
            if (deactivateDependencies)
            {
                //try to activate depend plugins
                if (Predecessors.Count(elem => !((PluginNode)elem).Deactivate(true)) > 0)
                {
                    return(false);
                }
            }
            else
            {
                //just count active plugins
                if (Predecessors.Count(elem => ((PluginNode)elem).IsActive) > 0)
                {
                    return(false);
                }
            }

            PluginInstance.DeactivatePlugin(PluginContext);

            IsActive = false;

            Graph.NotifyPlugins(PluginInstance, PluginNotification.Deactivated);

            PluginInstance.Dispose();

            Graph.NotifyPlugins(PluginInstance, PluginNotification.Disposed);

            PluginInstance = null;
            PluginContext  = null;

            return(true);
        }