Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mithilfe von Hintergrundaufgaben kann ihre App Code ausführen, wenn sich die App nicht im Vordergrund befindet. In einer Desktop-Windows App SDK-Anwendung hat die Hintergrundaktivität mehr Flexibilität als in UWP-Apps, Sie sollten sie jedoch verantwortungsbewusst verwalten, um eine gute Benutzererfahrung sicherzustellen.
Important
Desktop-Windows App SDK-Apps unterliegen nicht den gleichen Einschränkungen für die Hintergrundausführung wie UWP-Apps. Desktop-Apps können Hintergrundthreads frei ausführen, lange ausgeführte Aufgaben verwalten und standardmäßige .NET Threadingmuster verwenden. Ein guter Bürger des Systems bedeutet jedoch, unnötige Arbeit zu minimieren, wenn der Benutzer Ihre App nicht aktiv verwendet.
Bewährte Methoden für Hintergrundaktivitäten
Befolgen Sie die folgenden Richtlinien, um Ihre App effizient zu halten:
Reduzieren der Arbeit, wenn der Benutzer nicht mit Ihrer App interagiert
Wenn der Benutzer zu einer anderen App wechselt oder Ihr Fenster minimiert, verringern Sie die Häufigkeit von Timern, Netzwerk-Polling und anderen Hintergrundaufgaben. Dies spart Akku und gibt Systemressourcen für die App frei, mit der der Benutzer aktiv arbeitet.
Effiziente Planungsmuster verwenden
Verwenden Sie zeitgesteuerte Planung anstelle enger Polling-Schleifen. Verwenden Sie DispatcherTimer für regelmäßige Arbeiten oder System.Threading.Timer mit Intervallen, die für Ihr Szenario geeignet sind.
private DispatcherTimer _updateTimer;
private void MainWindow_Activated(object sender, WindowActivatedEventArgs args)
{
if (args.WindowActivationState == WindowActivationState.Deactivated)
{
// Window is no longer active — slow down updates.
_updateTimer.Interval = TimeSpan.FromSeconds(30);
}
else
{
// Window is active — use normal update rate.
_updateTimer.Interval = TimeSpan.FromSeconds(2);
}
}
Reagieren auf Strom- und Akkuzustände
Überprüfen Sie den Energiestatus des Systems, und passen Sie das Verhalten Ihrer App entsprechend an. Verringern Sie die Hintergrundaktivität, wenn das Gerät im Akkubetrieb läuft, und erwägen Sie, nicht unbedingt erforderliche Aufgaben zurückzustellen, bis das Gerät an das Stromnetz angeschlossen ist.
// Check power status using Windows.System.Power
var batteryStatus = Windows.System.Power.PowerManager.BatteryStatus;
var energySaverStatus = Windows.System.Power.PowerManager.EnergySaverStatus;
if (energySaverStatus == Windows.System.Power.EnergySaverStatus.On)
{
// Reduce background work when Battery Saver is active.
DisableNonEssentialUpdates();
}
void DisableNonEssentialUpdates()
{
// Pause non-essential timers, syncs, and animations here.
}
Abbrechen der Hintergrundarbeit beim Schließen der App
Wenn Die App heruntergefahren wird, brechen Sie alle verbleibenden Hintergrundaufgaben mithilfe von CancellationToken Mustern ab. Dadurch wird verhindert, dass Ihre App Systemressourcen enthält, nachdem sie nicht mehr sichtbar ist.
private CancellationTokenSource _cts = new();
private async Task DoBackgroundWorkAsync()
{
while (!_cts.Token.IsCancellationRequested)
{
await Task.Delay(TimeSpan.FromSeconds(10), _cts.Token);
// Perform periodic work.
}
}
private void MainWindow_Closed(object sender, WindowEventArgs args)
{
_cts.Cancel();
}
Verwenden von Hintergrundaufgaben mit Paketidentität
Wenn Ihre App mit MSIX verpackt ist, können Sie auch Hintergrundaufgaben registrieren, die als Reaktion auf Systemtrigger ausgeführt werden (z. B. Netzwerkstatusänderungen, Zeitzonen oder Benutzerpräsenz). Diese Aufgaben nutzen dieselbe BackgroundTaskBuilder API, die in UWP verfügbar ist. Weitere Informationen finden Sie unter "Unterstützen Ihrer App mit Hintergrundaufgaben".
Note
Verpackte Apps (MSIX) können BackgroundTaskBuilder für systemausgelöste Aufgaben verwenden. Entpackte Desktop-Apps sollten stattdessen Standard-.NET Threadingmuster verwenden.
Verwandte Inhalte
Windows developer