Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las sesiones de ejecución extendidas permiten a la aplicación solicitar que el sistema lo mantenga en ejecución para escenarios específicos, incluso cuando de otro modo sería candidato para la reducción de recursos en dispositivos con batería. Aunque las aplicaciones de escritorio no se suspenden automáticamente, la ejecución extendida sigue siendo útil para indicar la intención al sistema.
Importante
Las aplicaciones de escritorio siguen ejecutándose tanto si usan la ejecución extendida como si no. La principal ventaja de ExtendedExecutionSession en una aplicación de escritorio es indicar al sistema que tu trabajo es importante y que no debe verse interrumpido por medidas de ahorro de energía, como Modern Standby o el ahorro de batería.
Cuándo usar la ejecución extendida
Las sesiones de ejecución extendidas son más útiles en las aplicaciones de escritorio para:
- Guardar datos críticos : garantiza que se complete una operación de guardado grande antes de que el dispositivo entre en espera.
- Seguimiento de ubicación : mantener los datos GPS fluyendo mientras la aplicación está minimizada en un portátil.
- Cálculos de larga duración : finalización de una tarea de representación, compilación o análisis de datos.
En escenarios en los que la aplicación de escritorio simplemente necesita seguir ejecutándose (por ejemplo, una aplicación de chat o reproductor de música), no necesita una ejecución extendida; la aplicación continúa ejecutándose normalmente.
Creación de una sesión de ejecución extendida
Use la clase 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
}
}
Razones de ejecución prolongada
| Reason | Caso de uso |
|---|---|
SavingData |
La aplicación debe completar una operación de guardado |
LocationTracking |
La aplicación realiza el seguimiento de la ubicación del usuario. |
Unspecified |
Otro trabajo de larga duración |
Note
LocationTracking requiere la capacidad location en el manifiesto de la aplicación y el consentimiento del usuario.
Finalizar la sesión
Cuando finalice el trabajo, elimine la sesión para liberar la solicitud:
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;
}
}
Diferencias con respecto a UWP
| Comportamiento | UWP | Escritorio |
|---|---|---|
| propósito | Impide la suspensión | Importancia de las señales en la gestión de energía |
| La aplicación sigue ejecutándose sin ella | No: las aplicaciones para UWP se suspenden | Sí: las aplicaciones de escritorio se ejecutan normalmente |
| Revocación de sesión | Puede provocar suspensión | No detiene la aplicación, pero es posible que se apliquen ahorros de energía. |
SavingData motivo |
Impide la suspensión durante el guardado | La misma API, menos crítica, ya que la aplicación no se suspende |
Prácticas recomendadas
- Solo solicite la ejecución extendida cuando tenga un trabajo específico que no debe interrumpirse mediante el ahorro de energía.
- Controle siempre el
Revokedevento, incluso en las aplicaciones de escritorio. - Elimine la sesión tan pronto como finalice el trabajo.
- No mantenga una sesión extendida indefinidamente, puede afectar a la duración de la batería del dispositivo.