Háttérvégrehajtás Windows App SDK asztali alkalmazásokban

A Windows App SDK beépített asztali alkalmazások folyamatosan futnak, még akkor is, ha a felhasználó másik alkalmazásra vált. Ez a cikk bemutatja a háttér-végrehajtás működését, és ajánlott eljárásokat javasol a hatékonyság érdekében.

Important

Az asztali alkalmazásokat a rendszer nem függeszti fel vagy szünteti meg automatikusan az UWP-alkalmazásokhoz hasonlóan. Az alkalmazás addig folytatja a végrehajtást, amíg a felhasználó be nem zárja, vagy a folyamat kilép. A határozatlan ideig történő futtatáshoz nincs szükség speciális API-kra vagy korlátozott képességekre. Ha szükséges, a rendszermemória-értesítések használatával reagálhat az erőforrás-terhelésre.

Az asztali alkalmazások natív módon futnak a háttérben

Az UWP-ben a korlátlan ideig a háttérben való futtatáshoz a extendedBackgroundTaskTime korlátozott képességre és vállalati telepítésre volt szükség. Az asztali alkalmazásokra nem vonatkozik ez a korlátozás. Az alkalmazás szálai továbbra is futnak, az időzítők folyamatosan aktiválódnak, és a hálózati kapcsolatok nyitva maradnak, függetlenül attól, hogy az ablak látható-e.

Ez azt jelenti, hogy:

  • Állandó kapcsolatok fenntartása kiszolgálókhoz (például csevegőalkalmazások, valós idejű monitorozás).
  • Futtasson hosszú számításokat (például videokódolást, adatelemzést).
  • Ütemezett frissítések lekérdezése.
  • Hangfájlok lejátszása és médiavezérlők frissítése.

Ajánlott eljárások az akkumulátor hatékonyságához

Bár az asztali alkalmazások korlátozás nélkül is futtathatók, az akkumulátoros eszközökön való jó polgárság javítja a felhasználói élményt. A rendszer nagy erőforrás-fogyasztóként megjelölheti az alkalmazást, ha túlzott processzor- vagy hálózathasználatot használ a háttérben.

Munka csökkentése, ha az ablak nem látható

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

Energiatudatos minták használata

  • Időzítő gyakoriságának csökkentése – Váltás a másodperc alattiról a több másodperces időközökre, amikor az alkalmazás a háttérben van.
  • Nem alapvető renderelés szüneteltetése – Animációk, GPU-munka és képernyőfrissítések leállítása.
  • Batch hálózati kérések – Több kérés kombinálása kevesebb, nagyobb kérelemmel.
  • Tartsa tiszteletben az akkumulátor-takarékos eszközt – Ellenőrizze a PowerManager.BatteryStatus-t , és csökkentse a munkát, ha az eszköz akkumulátoron van.
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;
    }
}

Háttérfeladatok használata eseményvezérelt munkához

Ha az alkalmazásnak folyamatos futtatás nélkül kell válaszolnia a rendszereseményekre (például időzítőre, leküldéses értesítésre vagy hálózatváltozásra), érdemes inkább háttérfeladatot használnia:

var builder = new BackgroundTaskBuilder
{
    Name = "PeriodicSync",
    TaskEntryPoint = "MyApp.Background.SyncTask"
};
builder.SetTrigger(new TimeTrigger(15, false));
builder.Register();

Note

A háttérfeladatokhoz MSIX-csomagdentitás szükséges a regisztrációhoz. Ha az alkalmazás ki van csomagolva, használjon inkább folyamaton belüli időzítőket vagy ütemezett feladatokat.

Kiterjesztett végrehajtás kritikus munkákhoz

Ha olyan munkája van, amelyet nem szabad megszakítania az energiagazdálkodással (például nagy fájl mentésével), használjon kiterjesztett végrehajtási munkamenetet. Ez jelzi a rendszernek, hogy a munkája fontos, még az akkumulátorral működő eszközökön is.

Összehasonlítás az UWP háttérvégrehajtásával

Funkció UWP Munkaasztal
Az alkalmazás a háttérben fut Csak háttérfeladatokkal vagy korlátozott képességekkel Mindig
Képességdeklarációt igényel Igen (extendedBackgroundTaskTime) No
A rendszer leáll az erőforrások mentéséhez Igen No
Akkumulátorkímélő teljesítménykorlátozás A rendszer kikényszeríti a korlátozásokat Az alkalmazásnak önszabályozónak kell lennie.
Háttérfeladatok eseményvezérelt munkához Elsődleges mechanizmus Választható kiegészítés