Energiemanagement in Windows Forms
Ihre Windows Forms-Anwendungen können die Power Management-Features im Windows-Betriebssystem nutzen. Ihre Anwendungen können den Energiestatus eines Computers überwachen und Maßnahmen ergreifen, wenn eine Statusänderung auftritt. Wenn Ihre Anwendung z. B. auf einem tragbaren Computer ausgeführt wird, können Sie bestimmte Features in Ihrer Anwendung deaktivieren, wenn der Akkustand des Computers unter eine bestimmte Stufe fällt.
.NET Framework stellt ein PowerModeChanged Ereignis bereit, das auftritt, wenn sich ein Stromstatus ändert, z. B. wenn ein Benutzer das Betriebssystem anhält oder fortsetzt oder wenn sich der Netzstromstatus oder der Akkustatus ändert. Die PowerStatus-Eigenschaft der SystemInformation-Klasse kann verwendet werden, um den aktuellen Status abzufragen, wie im folgenden Codebeispiel gezeigt.
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
Neben den BatteryChargeStatus Enumerationen enthält die eigenschaft PowerStatus auch Enumerationen zum Bestimmen der Akkukapazität (BatteryFullLifetime) und des Prozentsatzes der Akkuladung (BatteryLifePercent, BatteryLifeRemaining).
Sie können die SetSuspendState-Methode des Application verwenden, um einen Computer in den Ruhezustand oder in den Standby-Modus zu versetzen. Wenn das Argument force
auf false
festgelegt ist, sendet das Betriebssystem ein Ereignis an alle Anwendungen, die um die Erlaubnis zum Anhalten bitten. Wenn das argument disableWakeEvent
auf true
festgelegt ist, deaktiviert das Betriebssystem alle Wake-Ereignisse.
Im folgenden Codebeispiel wird veranschaulicht, wie ein Computer in den Ruhezustand versetzt wird.
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
Siehe auch
.NET Desktop feedback