Condividi tramite


Risparmio energia in Windows Form

Aggiornamento: novembre 2007

Le applicazioni Windows Form possono sfruttare le funzionalità di risparmio energia disponibili nel sistema operativo Windows. Le applicazioni possono monitorare lo stato dell'alimentazione di un computer ed eseguire una determinata azione in caso di variazione di tale stato. Se ad esempio l'applicazione è in esecuzione su un computer portatile, è possibile disattivare alcune funzionalità dell'applicazione quando il livello di carica della batteria scende al di sotto di una determinata soglia.

In .NET Framework è disponibile un evento PowerModeChanged che viene generato ogni volta che si verifica una variazione nello stato dell'alimentazione, ad esempio quando un utente sospende o ripristina il sistema operativo oppure quando lo stato dell'alimentazione CA o della batteria cambia. La proprietà PowerStatus della classe SystemInformation può essere utilizzata per eseguire una query sullo stato corrente, come illustrato nell'esempio di codice riportato di seguito.

Private Sub PowerModeChanged(ByVal Sender As System.Object, ByVal e As _
Microsoft.Win32.PowerModeChangedEventArgs)
    Dim si As System.Windows.Forms.SystemInformation
    Select Case si.PowerStatus.BatteryChargeStatus
        Case BatteryChargeStatus.Low
            MessageBox.Show("Battery is running low", _ System.Windows.Forms.MessageBoxIcon.Exclamation)
        Case BatteryChargeStatus.Critical
            MessageBox.Show("Battery is critically low", _ System.Windows.Forms.MessageBoxIcon.Stop)
        Case Else
            ' Battery is okay.
            Exit Select
    End Select
End Sub
private void powerModeChanged(System.Object sender, _
Microsoft.Win32.PowerModeChangedEventArgs e)
{
    int si = SystemInformation.PowerStatus;
    switch (si)
        {
        case BatteryChargeStatus.Low:
            MessageBox.Show("Battery is running low", _ MessageBoxIcon.Exclamation);
        case BatteryChargeStatus.Low:
            MessageBox.Show("Battery is critcally low", _ MessageBoxIcon.Stop);
        Default:
            // Battery is okay.
        }
}

Oltre alle enumerazioni BatteryChargeStatus, la proprietà PowerStatus contiene anche le enumerazioni per determinare la capacità della batteria (BatteryFullLifetime) e la percentuale di carica della batteria (BatteryLifePercent, BatteryLifeRemaining).

È possibile utilizzare il metodo SetSuspendState di Application per impostare il computer in modalità di sospensione. Se l'argomento force è impostato su false, verrà trasmesso un evento a tutte le applicazioni che richiedono, per la sospensione, un'autorizzazione. Se l'argomento disableWakeEvent è impostato su true, verranno disattivati automaticamente tutti gli eventi di riattivazione.

Nell'esempio di codice riportato di seguito viene illustrato come impostare un computer in modalità di sospensione.

Private si as System.Windows.Forms.SystemInformation
If si.PowerStatus.BatteryChargeStatus.Critical = True Then
    Application.SetSuspendState(PowerState.Hibernate, False, False)
End If
if (SystemInformation.PowerStatus.BatteryChargeStatus.ToString() == _
"Critical")
    {
        Application.SetSuspendState (PowerState.Hibernate, false, false);
    }

Vedere anche

Riferimenti

PowerModeChanged

PowerStatus

SetSuspendState

SessionSwitch