Gerenciamento de energia no Windows Forms
Seus aplicativos Windows Forms podem tirar proveito dos recursos de gerenciamento de energia no sistema operacional Windows. Os aplicativos podem monitorar o status de energia de um computador e agir quando ocorre uma alteração de status. Por exemplo, se o aplicativo é executado em um computador portátil, convém desabilitar determinados recursos do seu aplicativo quando a carga da bateria do computador fica abaixo de um determinado nível.
O .NET Framework fornece um evento que ocorre sempre que há uma alteração no status de energia, como quando um PowerModeChanged usuário suspende ou retoma o sistema operacional ou quando o status de energia CA ou o status da bateria mudam. A PowerStatus propriedade da classe pode ser usada para consultar o status atual, conforme mostrado no exemplo de SystemInformation código a seguir.
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
Além das enumerações, a propriedade também contém enumerações para determinar a capacidade da bateria () e a porcentagem de carga da BatteryChargeStatus bateria (BatteryFullLifetimeBatteryLifePercent, BatteryLifeRemaining).PowerStatus
Você pode usar o SetSuspendState método do para colocar um computador em modo de Application hibernação ou suspensão. Se o argumento force
for definido para false
, o sistema operacional transmitirá um evento para todos os aplicativos solicitando permissão para suspender. Se o argumento disableWakeEvent
é definido para true
, o sistema operacional desabilita todos os eventos de ativação.
O exemplo de código a seguir demonstra como colocar um computador em hibernação.
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
Confira também
.NET Desktop feedback