Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Relace rozšířeného spuštění umožňují vaší aplikaci požádat systém, aby ji v určitých scénářích ponechal spuštěnou, i když by jinak mohla být kvůli úspoře prostředků na bateriově napájených zařízeních omezena. Desktopové aplikace sice nejsou automaticky pozastavené, ale rozšířené spouštění je stále užitečné pro signalizaci záměru systému.
Important
Desktopové aplikace nadále běží bez ohledu na to, jestli používají rozšířené spouštění. Hlavní výhodou ExtendedExecutionSession v desktopové aplikaci je sdělit systému, že vaše práce je důležitá a neměla by být přerušována funkcemi pro úsporu energie, jako jsou Modern Standby nebo režim úspory baterie.
Kdy použít rozšířené spuštění
Rozšířené relace provádění jsou nejužitečnější v desktopových aplikacích pro:
- Ukládání důležitých dat – Zajištění dokončení velké operace ukládání před vstupem zařízení do úsporného režimu.
- Sledování polohy – Udržování toku dat GPS v době, kdy je aplikace minimalizovaná na přenosném počítači.
- Dlouhotrvající výpočty – dokončení úlohy vykreslování, kompilace nebo analýzy dat
Ve scénářích, kdy vaše desktopová aplikace jednoduše potřebuje běžet (například chatovací aplikace nebo hudební přehrávač), nepotřebujete rozšířené spouštění – aplikace stále normálně běží.
Vytvořte rozšířenou relaci spuštění
Použijte třídu ExtendedExecutionSession:
using Windows.ApplicationModel.ExtendedExecution;
private ExtendedExecutionSession? _session;
private async Task StartExtendedSessionAsync()
{
var session = new ExtendedExecutionSession
{
Reason = ExtendedExecutionReason.Unspecified,
Description = "Completing critical data save"
};
session.Revoked += ExtendedSession_Revoked;
ExtendedExecutionResult result = await session.RequestExtensionAsync();
if (result == ExtendedExecutionResult.Allowed)
{
_session = session;
// Proceed with the long-running work
}
else
{
session.Dispose();
// The system denied the request — handle gracefully
}
}
private void ExtendedSession_Revoked(object sender,
ExtendedExecutionRevokedEventArgs args)
{
// The session was revoked. Save state quickly.
if (args.Reason == ExtendedExecutionRevokedReason.SystemPolicy)
{
// System needs resources — wrap up immediately
}
}
Důvody rozšířeného provádění
| Reason | Případ použití |
|---|---|
SavingData |
Aplikace musí dokončit operaci uložení. |
LocationTracking |
Vaše aplikace sleduje polohu uživatele. |
Unspecified |
Další dlouhotrvající práce |
Note
LocationTracking vyžaduje oprávnění location v manifestu aplikace a souhlas uživatele.
Ukončení relace
Po dokončení práce zrušte relaci, aby se uvolnil požadavek:
private ExtendedExecutionSession? _session;
private void ExtendedSession_Revoked(object sender,
ExtendedExecutionRevokedEventArgs args)
{
}
private void StopExtendedSession()
{
if (_session != null)
{
_session.Revoked -= ExtendedSession_Revoked;
_session.Dispose();
_session = null;
}
}
Rozdíly od UPW
| Chování | UPW | Stolní počítač |
|---|---|---|
| Purpose | Zabraňuje pozastavení | Signály důležitosti pro řízení spotřeby |
| Aplikace bez ní zůstane spuštěná. | Ne — aplikace UWP se pozastaví | Ano – desktopové aplikace běží normálně |
| Zneplatnění relace | Může způsobit pozastavení | Nezastaví aplikaci, ale úspora energie se může uplatnit |
SavingData Důvod |
Zabraňuje pozastavení během ukládání. | Stejné rozhraní API, méně důležité, protože aplikace není pozastavená |
Osvědčené postupy
- Vyžadujte rozšířené spuštění pouze tehdy, když máte konkrétní úlohu, která by neměla být přerušena kvůli úspoře energie.
- Vždy zpracujte událost
Revoked, i v desktopových aplikacích. - Jakmile dokončíte práci, ukončete relaci.
- Nenechávejte prodlouženou relaci spuštěnou neomezeně dlouho – může to ovlivnit výdrž baterie zařízení.
Související obsah
Windows developer