SuspendingEventHandler Delegat
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt die -Methode dar, die das Suspending-Ereignis behandelt.
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)
Parameter
- sender
-
Object
Platform::Object
IInspectable
Das Objekt, in dem der Handler angefügt ist.
Ereignisdaten.
- Attribute
Windows-Anforderungen
Gerätefamilie |
Windows 10 (eingeführt in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)
|
Beispiele
Dieses Codebeispiel veranschaulicht ein typisches Verwendungsmuster für dieses Ereignis. Dieser Code wird von vielen XAML-Beispielen, z. B. dem Eingabebeispiel, als Teil des Codebehinds für die Datei app.xaml verwendet. Wenn Sie die XAML-Beispiele durchsuchen, finden Sie den Quellcode für die Klassen-API, auf die SuspensionManager
in diesem Code verwiesen wird.
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
Hinweise
Das System hält Ihre App an, wenn der Benutzer zu einer anderen App oder zum Desktop wechselt, und setzt Ihre App fort, wenn der Benutzer zurück zu ihr wechselt. Das System kann Ihre App jedoch auch beenden, während sie angehalten wird, um Ressourcen freizugeben. Daher sollten Sie das Angehaltene Ereignis behandeln, um die folgenden Vorgänge auszuführen:
- Behalten Sie den Benutzersitzungsstatus bei.
- Lassen Sie alle exklusiven Sperren für Ressourcen frei.
- Reduzieren Sie nach Möglichkeit die Arbeitsspeicherauslastung. Serialisieren Sie beispielsweise alle Daten, die bei der Reaktivierung einfach in Objektform rekonstruiert werden können.
- Speichern Sie den App-Status. Das Suspending-Ereignis ist der einzige Hinweis darauf, dass Ihre App vor der Kündigung (falls dies geschieht) erhält. Daher sollten Sie genügend Sitzungsstatus (z. B. den aktuellen Artikel, der gelesen wird oder die aktuelle Filmwiedergabeposition) speichern, um während der Aktivierung genau dieselbe Benutzeroberfläche neu zu erstellen. Die Anleitung für Inhaltserstellungs-Apps besteht darin, die Arbeit eines Benutzers frühzeitig und häufig zu speichern, aber auch eine letzte Speicherung während des Anhaltens zu commiten. Das Speichern von Daten vor dem Anhalten ist nützlich, da der Ereignishandler für das Anhalten nur fünf Sekunden zeit hat, um den Vorgang abzuschließen.
Wenn Ihre App beendet wird, können Sie den App-Status in einer OnLaunched-Methode wiederherstellen. Wenn Ihre App fortgesetzt wird, bevor sie beendet wird, stellt das System den App-Zustand automatisch wieder her. Sie sollten das Resuming-Ereignis nur behandeln, wenn Sie angezeigte Inhalte aktualisieren müssen, die sich möglicherweise geändert haben, während die App angehalten wird, z. B. Nachrichtenfeeds oder der Standort des Benutzers.