Esempio n. 1
0
        public static void Shutdown()
        {
            bool CanClose = true;

            foreach (KeyValuePair <Assembly, List <IPluginClient> > Entry in LoadedPluginTable)
            {
                foreach (IPluginClient Plugin in Entry.Value)
                {
                    CanClose &= Plugin.CanClose(CanClose);
                }
            }

            if (!CanClose)
            {
                return;
            }

            foreach (KeyValuePair <Assembly, List <IPluginClient> > Entry in LoadedPluginTable)
            {
                foreach (IPluginClient Plugin in Entry.Value)
                {
                    Plugin.BeginClose();
                }
            }

            bool IsClosed;

            do
            {
                IsClosed = true;

                foreach (KeyValuePair <Assembly, List <IPluginClient> > Entry in LoadedPluginTable)
                {
                    foreach (IPluginClient Plugin in Entry.Value)
                    {
                        IsClosed &= Plugin.IsClosed;
                    }
                }

                if (!IsClosed)
                {
                    Thread.Sleep(100);
                }
            }while (!IsClosed);

            FullCommandList.Clear();
            LoadedPluginTable.Clear();
        }