예제 #1
0
파일: App.xaml.cs 프로젝트: Dlizzz/Catspaw
        // Manage power events to switch on or off teh components
        private void PowerEventHandler(object sender, PowerModeChangedEventArgs e)
        {
            switch (e.Mode)
            {
            // Resuming the system
            case PowerModes.Resume:
                Log.Information("Hello again. I'm back to life!");

                // If we have a Tv, try to power it on. Report if it fails.
                try
                {
                    SamsungTv?.PowerOn();
                }
                catch (CecException err)
                {
                    Log.Error("Powering on TV set failed", err);
                }
                // If we have an Avr, try to power it on. Report if it fails.
                try
                {
                    PioneerAvr?.PowerOnAsync();
                }
                catch (AvrException err)
                {
                    Log.Error("Powering on AVR failed", err);
                }
                break;

            // Suspending the system
            case PowerModes.Suspend:
                Log.Information("Have a good night. I'm falling asleep... ");

                // If we have a Tv, try to power it off. Report if it fails.
                try
                {
                    SamsungTv?.PowerOff();
                }
                catch (CecException err)
                {
                    Log.Error("Powering off TV set failed", err);
                }
                // If we have an Avr, try to power it off. Report if it fails.
                try
                {
                    PioneerAvr?.PowerOffAsync();
                }
                catch (AvrException err)
                {
                    Log.Error("Powering off AVR failed", err);
                }
                break;

            // Nothing to do
            case PowerModes.StatusChange:
                break;
            }
        }
예제 #2
0
파일: App.xaml.cs 프로젝트: Dlizzz/Catspaw
 /// <summary>
 /// Dispose managed and unmanaged resources
 /// </summary>
 /// <param name="disposing">True to dispose managed resources</param>
 protected virtual void Dispose(bool disposing)
 {
     if (!disposedValue)
     {
         if (disposing)
         {
             SamsungTv?.Dispose();
             PioneerAvr?.Dispose();
             apiServer?.Dispose();
             notifyIcon?.Dispose();
             Log.CloseAndFlush();
             // Because SystemEvents.PowerModeChanged Event is a static event,
             // you must detach your event handlers when your application is disposed, or memory leaks will result.
             SystemEvents.PowerModeChanged -= PowerEventHandler;
             catspawInstance?.Dispose();
         }
         disposedValue = true;
     }
 }