Risparmio energia in Windows FormPower Management in Windows Forms

Le applicazioni Windows Forms possono sfruttare le funzionalità di risparmio energia nel sistema operativo Windows.Your Windows Forms applications can take advantage of the power management features in the Windows operating system. Le applicazioni possono monitorare lo stato di alimentazione di un computer e intraprendere l'azione quando si verifica un cambiamento di stato.Your applications can monitor the power status of a computer and take action when a status change occurs. Ad esempio, se l'applicazione è in esecuzione su un computer portatile, è consigliabile disabilitare determinate funzionalità dell'applicazione quando scende di carica della batteria del computer in un determinato livello.For example, if your application is running on a portable computer, you might want to disable certain features in your application when the computer's battery charge falls under a certain level.

Il .NET Framework.NET Framework fornisce un PowerModeChanged evento che si verifica ogni volta che viene apportata una modifica dello stato di alimentazione, ad esempio quando un utente sospende o riprende il sistema operativo, o quando lo stato dell'alimentazione CA o lo stato della batteria cambia.The .NET Framework.NET Framework provides a PowerModeChanged event that occurs whenever there is a change in power status, such as when a user suspends or resumes the operating system, or when the AC power status or battery status changes. Il PowerStatus proprietà del SystemInformation classe può essere utilizzato per eseguire query per lo stato corrente, come illustrato nell'esempio di codice seguente.The PowerStatus property of the SystemInformation class can be used to query for the current status, as shown in the following code example.

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

Oltre il BatteryChargeStatus enumerazioni, le PowerStatus proprietà contiene anche le enumerazioni per determinare la capacità della batteria (BatteryFullLifetime) e percentuale di carica batteria (BatteryLifePercent, BatteryLifeRemaining).Besides the BatteryChargeStatus enumerations, the PowerStatus property also contains enumerations for determining battery capacity (BatteryFullLifetime) and battery charge percentage (BatteryLifePercent, BatteryLifeRemaining).

È possibile utilizzare il SetSuspendState metodo il Application per impostare un computer in modalità di sospensione.You can use the SetSuspendState method of the Application to put a computer into hibernation or suspend mode. Se il force argomento è impostato su false, il sistema operativo verrà trasmesso un evento a tutte le applicazioni che richiede l'autorizzazione di sospensione.If the force argument is set to false, the operating system will broadcast an event to all applications requesting permission to suspend. Se il disableWakeEvent argomento è impostato su true, il sistema operativo Disabilita tutti gli eventi di riattivazione.If the disableWakeEvent argument is set to true, the operating system disables all wake events.

Esempio di codice riportato di seguito viene illustrato come inserire un computer in sospensione.The following code example demonstrates how to put a computer into hibernation.

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

Vedere ancheSee Also

PowerModeChanged
PowerStatus
SetSuspendState
SessionSwitch