Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 |
Kapcsolódó tartalom
Windows developer