Collection to hold a list of keyed Delegates. Allows registering multiple Handlers against one type of Event
상속: IDisposable
        private static void bootstrap()
        {
            /*
             * Unfortunately, the DS1307 seems to be causing trouble with any AnalogInputs
             * when being read from in I2C.  Not sure why....using an NST server instead
             */

            // Set system time
            DateTime.Now.SetFromNetwork(new TimeSpan(-5, 0, 0));
            //DS1307 clock = new DS1307();
            //clock.TwelveHourMode = false;
            //Utility.SetLocalTime(clock.CurrentDateTime);
            //clock.Dispose();
            Debug.Print(DateTime.Now.ToString());

            m_htmlBuilder      = new HtmlBuilder(/* Use local file resources?*/ false);
            m_eventHandlerList = new EventHandlerList();
            m_pluginScheduler  = new PluginScheduler();

            // Each key in 'config' is a collection of plugin types (input, output, control),
            // so pull out of the root element.
            Hashtable config = ((Hashtable)JSON.JsonDecodeFromVar(Settings.ConfigFile))["config"] as Hashtable;

            // parse each plugin type
            foreach (string pluginType in config.Keys)
            {
                ParseConfig(config[pluginType] as Hashtable, pluginType);
            }

            config = null;
            // config parsed, write out html index
            m_htmlBuilder.GenerateIndex();
            m_htmlBuilder.Dispose();
            Debug.GC(true);

            m_pluginScheduler.Start();
        }
        private static void bootstrap()
        {
            /*
             * Unfortunately, the DS1307 seems to be causing trouble with any AnalogInputs
             * when being read from in I2C.  Not sure why....using an NST server instead
             */

            // Set system time
            //DateTime.Now.SetFromNetwork(new TimeSpan(-4, 0, 0));
            //DS1307 clock = new DS1307();
            //clock.TwelveHourMode = false;
            //Utility.SetLocalTime(clock.CurrentDateTime);
            //clock.Dispose();

            m_htmlBuilder = new HtmlBuilder();
            m_eventHandlerList = new EventHandlerList();
            m_pluginScheduler = new PluginScheduler();

            // Each key in 'config' is a collection of plugin types (input, output, control),
            // so pull out of the root element.
            Hashtable config = ((Hashtable)JSON.JsonDecodeConfig(ConfigFile))["config"] as Hashtable;

            // parse each plugin type
            foreach (string pluginType in config.Keys)
                ParseConfig(config[pluginType] as Hashtable, pluginType);

            config = null;
            // config parsed, write out html index
            m_htmlBuilder.GenerateIndex();
            m_htmlBuilder.Dispose();
            Debug.GC(true);

            m_pluginScheduler.Start();
        }