Condividi tramite


SuspendingEventHandler Delegato

Definizione

Rappresenta il metodo che gestirà l'evento Suspending .

public delegate void SuspendingEventHandler(Platform::Object ^ sender, SuspendingEventArgs ^ e);
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(591565925, 58218, 16610, 177, 57, 164, 112, 70, 2, 166, 225)]
class SuspendingEventHandler : MulticastDelegate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(591565925, 58218, 16610, 177, 57, 164, 112, 70, 2, 166, 225)]
public delegate void SuspendingEventHandler(object sender, SuspendingEventArgs e);
Public Delegate Sub SuspendingEventHandler(sender As Object, e As SuspendingEventArgs)

Parametri

sender
Object

Platform::Object

IInspectable

Oggetto in cui è associato il gestore.

e
SuspendingEventArgs

Dati dell'evento.

Attributi

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)

Esempio

Questo esempio di codice illustra un modello di utilizzo tipico per questo evento. Questo codice viene usato da molti esempi XAML, ad esempio l'esempio input, come parte del code-behind per il file app.xaml. Se si esplorano gli esempi XAML, è possibile trovare il codice sorgente per l'API SuspensionManager di classe come indicato in questo codice.

async protected void OnSuspending(object sender, SuspendingEventArgs args)
{
    SuspendingDeferral deferral = args.SuspendingOperation.GetDeferral();
    await SuspensionManager.SaveAsync();
    deferral.Complete();
}
Private Async Sub OnSuspending(sender As Object, args As SuspendingEventArgs) 
    Dim deferral As SuspendingDeferral = args.SuspendingOperation.GetDeferral 
    Await SuspensionManager.SaveAsync 
    deferral.Complete() 
End Sub 

Commenti

Il sistema sospende l'app ogni volta che l'utente passa a un'altra app o al desktop e riprende l'app ogni volta che l'utente vi torna. Tuttavia, il sistema può anche terminare l'app mentre è sospesa per liberare risorse. Pertanto, è necessario gestire l'evento Suspending per eseguire le operazioni seguenti:

  • Mantenere lo stato della sessione utente.
  • Rilasciare eventuali blocchi esclusivi sulle risorse.
  • Ridurre l'utilizzo della memoria, se possibile. Ad esempio, serializzare tutti i dati facili da ricostruire in forma di oggetto al momento della riattivazione.
  • Salvare lo stato dell'app. L'evento Suspending è l'unica indicazione che l'app riceverà prima della chiusura (se si verifica). Per questo motivo, dovresti archiviare uno stato di sessione sufficiente (ad esempio l'articolo corrente letto o la posizione di riproduzione del filmato corrente) per ricreare la stessa esperienza durante l'attivazione. Le linee guida per la creazione di contenuti sono il salvataggio anticipato e frequente del lavoro di un utente, ma anche il commit di un salvataggio finale durante la sospensione. Il salvataggio dei dati prima della sospensione è utile perché il gestore eventi Suspending ha solo 5 secondi per completare l'operazione.

Se l'app viene terminata, puoi ripristinare lo stato dell'app in un override del metodo OnLaunched . Se l'app riprende prima che venga terminata, il sistema ripristina automaticamente lo stato dell'app. È consigliabile gestire l'evento Ripresa solo se è necessario aggiornare i contenuti visualizzati che potrebbero essere stati modificati durante la sospensione dell'app, ad esempio feed di notizie o la posizione dell'utente.

Si applica a