Windows Forms의 전원 관리
Windows Forms 애플리케이션은 Windows 운영 체제의 전원 관리 기능을 활용할 수 있습니다. 애플리케이션은 컴퓨터의 전원 상태를 모니터링하고 상태가 변경될 때 조치를 취할 수 있습니다. 예를 들어, 애플리케이션이 휴대용 컴퓨터에서 실행 중인 경우 컴퓨터의 배터리 충전이 특정 수준 아래로 떨어지면 애플리케이션에서 특정 기능을 비활성화하려고 할 수 있습니다.
.NET Framework는 사용자가 운영 체제를 일시 중단하거나 재개할 때 또는 AC 전원 상태 또는 배터리 상태가 변경될 때처럼, 전원 상태의 변경이 있을 때마다 발생하는 PowerModeChanged 이벤트를 제공합니다. SystemInformation 클래스의 PowerStatus 속성을 사용하여 다음 코드 예와 같이, 현재 상태를 쿼리할 수 있습니다.
public Form1()
{
InitializeComponent();
SystemEvents.PowerModeChanged += new PowerModeChangedEventHandler(SystemEvents_PowerModeChanged);
}
void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
{
switch (SystemInformation.PowerStatus.BatteryChargeStatus)
{
case System.Windows.Forms.BatteryChargeStatus.Low:
MessageBox.Show("Battery is running low.", "Low Battery", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
break;
case System.Windows.Forms.BatteryChargeStatus.Critical:
MessageBox.Show("Battery is critcally low.", "Critical Battery", MessageBoxButtons.OK, MessageBoxIcon.Stop);
break;
default:
// Battery is okay.
break;
}
}
Public Sub New()
InitializeComponent()
AddHandler Microsoft.Win32.SystemEvents.PowerModeChanged, AddressOf PowerModeChanged
End Sub
Private Sub PowerModeChanged(ByVal Sender As System.Object, ByVal e As Microsoft.Win32.PowerModeChangedEventArgs)
Select Case SystemInformation.PowerStatus.BatteryChargeStatus
Case BatteryChargeStatus.Low
MessageBox.Show("Battery is running low.", "Low Battery", MessageBoxButtons.OK, _
System.Windows.Forms.MessageBoxIcon.Exclamation)
Case BatteryChargeStatus.Critical
MessageBox.Show("Battery is critically low.", "Critical Battery", MessageBoxButtons.OK, _
System.Windows.Forms.MessageBoxIcon.Stop)
Case Else
' Battery is okay.
Exit Select
End Select
End Sub
BatteryChargeStatus 열거 외에, PowerStatus 속성은 배터리 용량(BatteryFullLifetime) 및 배터리 충전 백분율(BatteryLifePercent, BatteryLifeRemaining)을 판별하기 위한 열거도 포함합니다.
Application의 SetSuspendState 메서드를 사용하여 컴퓨터를 최대 절전 상태 또는 일시 중단 모드로 설정할 수 있습니다. force
인수가 false
로 설정된 경우, 운영 체제는 일시 중단 권한을 요청하는 모든 애플리케이션으로 이벤트를 브로드캐스트합니다. disableWakeEvent
인수가 true
로 설정되면, 운영 체제가 모든 절전 모드 해제 이벤트를 비활성화합니다.
다음 코드 예는 컴퓨터를 최대 절전 상태로 설정하는 방법을 보여줍니다.
if (SystemInformation.PowerStatus.BatteryChargeStatus == System.Windows.Forms.BatteryChargeStatus.Critical)
{
Application.SetSuspendState(PowerState.Hibernate, false, false);
}
If SystemInformation.PowerStatus.BatteryChargeStatus = System.Windows.Forms.BatteryChargeStatus.Critical Then
Application.SetSuspendState(PowerState.Hibernate, False, False)
End If
참고 항목
.NET Desktop feedback