Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Skrivbordsappar som skapats med Windows App SDK köras kontinuerligt, även när användaren växlar till en annan app. Den här artikeln förklarar hur bakgrundskörning fungerar och rekommenderar metodtips för effektivitet.
Important
Skrivbordsappar pausas eller avslutas inte automatiskt av systemet på samma sätt som UWP-appar. Appen fortsätter att köras tills användaren stänger den eller processen avslutas. Inga särskilda API:er eller begränsade funktioner krävs för att köras på obestämd tid. Använd meddelanden om systemminne för att svara på resursbelastning när det är lämpligt.
Skrivbordsappar körs i bakgrunden internt
I UWP krävdes den begränsade funktionen extendedBackgroundTaskTime och företagsdistribution för att köras i bakgrunden på obestämd tid. Skrivbordsappar har inte den här begränsningen. Appens trådar fortsätter att köras, timers fortsätter att utlösas och nätverksanslutningarna förblir öppna oavsett om fönstret är synligt.
Det innebär att du kan:
- Underhålla beständiga anslutningar till servrar (till exempel chattappar, realtidsövervakning).
- Kör långa beräkningar (till exempel videokodning, dataanalys).
- Sök efter uppdateringar enligt ett schema.
- Spela upp ljud och uppdatera mediekontroller.
Metodtips för batterieffektivitet
Även om skrivbordsappar kan köras utan begränsning förbättrar användarupplevelsen att vara en bra medborgare på batteridrivna enheter. Systemet kan flagga din app som en tung resurskonsument om den använder för mycket processor eller nätverk i bakgrunden.
Minska arbetet när fönstret inte visas
// m_window is your app's main Window; _updateTimer is a DispatcherTimer field.
Microsoft.UI.Xaml.Window m_window = this;
Microsoft.UI.Xaml.DispatcherTimer _updateTimer = new();
m_window.Activated += (sender, args) =>
{
if (args.WindowActivationState == WindowActivationState.Deactivated)
{
// Window lost focus — slow down background processing
_updateTimer.Interval = TimeSpan.FromSeconds(30);
}
else
{
// Window is active — resume full-speed processing
_updateTimer.Interval = TimeSpan.FromSeconds(1);
}
};
Använda energimedvetna mönster
- Minska timerfrekvensen – Växla från under sekund till flera sekunders intervall när appen finns i bakgrunden.
- Pausa icke-nödvändig återgivning – Stoppa animeringar, GPU-arbete och skärmuppdateringar.
- Batch-nätverksbegäranden – Kombinera flera begäranden till färre, större.
- Respektera batterisparfunktionen – Kontrollera PowerManager.BatteryStatus och minska arbetet när enheten är batteriladdad.
using Windows.System.Power;
private bool _enableBackgroundSync = true;
private void CheckPowerState()
{
if (PowerManager.BatteryStatus == BatteryStatus.Discharging &&
PowerManager.RemainingChargePercent < 20)
{
// Reduce background work significantly
_enableBackgroundSync = false;
}
}
Använd bakgrundsaktiviteter för händelsestyrt arbete
Om din app behöver svara på systemhändelser (till exempel en timer, push-meddelande eller nätverksändring) utan att köras kontinuerligt kan du överväga att använda en bakgrundsaktivitet i stället:
var builder = new BackgroundTaskBuilder
{
Name = "PeriodicSync",
TaskEntryPoint = "MyApp.Background.SyncTask"
};
builder.SetTrigger(new TimeTrigger(15, false));
builder.Register();
Note
Bakgrundsaktiviteter kräver MSIX-paketidentitet för registrering. Om din app inte är paketerad använder du i stället interna timers eller schemalagda uppgifter.
Utökad exekvering för kritiskt arbete
Om du har arbete som inte bör avbrytas av energihantering (till exempel när du sparar en stor fil) ska du använda en utökad körningssession. Detta signalerar till systemet att ditt arbete är viktigt, även på batteridrivna enheter.
Jämförelse med UWP-bakgrundskörning
| Feature | UWP | Desktop |
|---|---|---|
| Appen körs i bakgrunden | Endast med bakgrundsaktiviteter eller begränsade funktioner | Alltid |
| Kräver kapacitetsdeklaration | Ja (extendedBackgroundTaskTime) |
No |
| Systemet avslutas för att spara resurser | Yes | No |
| Strypning i batterisparläge | Systemet tillämpar begränsningar | Appen bör regleras själv |
| Bakgrundsaktiviteter för händelsedrivet arbete | Primär mekanism | Valfritt komplement |
Relaterat innehåll
Windows developer