Управление питанием в Windows Forms
Приложения Windows Forms можно воспользоваться преимуществами функций управления питанием в операционной системе Windows. Приложения можно отслеживать состояние питания компьютера и предпринимать действия при изменении состояния. Например если приложение выполняется на портативном компьютере, может потребоваться отключить некоторые функции в приложении, когда заряд батареи падает ниже определенного уровня.
.NET Framework Предоставляет PowerModeChanged событие, возникающее при каждом изменении состояния питания, например когда пользователь приостанавливает или возобновляет работу операционной системы, или при изменении состояния питания от сети или состояние батареи. PowerStatus Свойство SystemInformation класс может быть используется для запроса его текущего состояния, как показано в следующем примере кода.
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;
}
}
Помимо BatteryChargeStatus перечислений, PowerStatus свойство также содержит перечисления для определения заряда батареи (BatteryFullLifetime) и процента заряда батареи (BatteryLifePercent, BatteryLifeRemaining).
Можно использовать SetSuspendState метод Application перевести компьютер в режим гибернации или спящий режим. Если force
аргумент имеет значение false
, операционная система передает полученное событие ко всем приложениям, запрашивая разрешение на приостановку. Если disableWakeEvent
аргумент имеет значение true
, операционная система отключает все события пробуждения.
В следующем примере кода показано, как перевести компьютер в спящий режим.
if (SystemInformation.PowerStatus.BatteryChargeStatus == System.Windows.Forms.BatteryChargeStatus.Critical)
{
Application.SetSuspendState(PowerState.Hibernate, false, false);
}