/// <summary>
        /// 전원 상태 감지 시스템을 초기화하고 시작합니다.
        /// 처음 한 번만 호출하거나, Stop()을 먼저 호출한 후에 호출해야 합니다.
        /// </summary>
        public void InitPowerEvents()
        {
            var q = new WqlEventQuery();

            q.EventClassName       = "Win32_PowerManagementEvent";
            managementEventWatcher = new ManagementEventWatcher(q);
            managementEventWatcher.EventArrived += PowerEventArrive;

            if (OnPowerSuspend != null)
            {
                foreach (Delegate d in OnPowerSuspend.GetInvocationList())
                {
                    OnPowerSuspend -= (PowerEvent)d;
                }
            }
            if (OnPowerResume != null)
            {
                foreach (Delegate d in OnPowerResume.GetInvocationList())
                {
                    OnPowerResume -= (PowerEvent)d;
                }
            }

            managementEventWatcher.Start();

            //SystemEvents.PowerModeChanged += OnPowerChange;
        }
 private void PowerEventArrive(object sender, EventArrivedEventArgs e)
 {
     foreach (PropertyData pd in e.NewEvent.Properties)
     {
         if (pd == null || pd.Value == null)
         {
             continue;
         }
         var name = powerValues.ContainsKey(pd.Value.ToString())
                        ? powerValues[pd.Value.ToString()]
                        : pd.Value.ToString();
         Console.WriteLine("PowerEvent:" + name);
         if (pd.Value.ToString() == "4" && OnPowerSuspend != null &&
             OnPowerSuspend.GetInvocationList().Length > 0)
         {
             OnPowerSuspend();
         }
         else if (pd.Value.ToString() == "7" && OnPowerResume != null &&
                  OnPowerResume.GetInvocationList().Length > 0)
         {
             OnPowerResume();
         }
     }
 }