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);
}