SuspendingEventHandler Delegado
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Representa el método que controlará el evento Suspending .
public delegate void SuspendingEventHandler(Platform::Object ^ sender, SuspendingEventArgs ^ e);
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(591565925, 58218, 16610, 177, 57, 164, 112, 70, 2, 166, 225)]
class SuspendingEventHandler : MulticastDelegate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(591565925, 58218, 16610, 177, 57, 164, 112, 70, 2, 166, 225)]
public delegate void SuspendingEventHandler(object sender, SuspendingEventArgs e);
Public Delegate Sub SuspendingEventHandler(sender As Object, e As SuspendingEventArgs)
Parámetros
- sender
-
Object
Platform::Object
IInspectable
Objeto donde está asociado el controlador.
Datos de evento
- Atributos
Requisitos de Windows
Familia de dispositivos |
Windows 10 (se introdujo en la versión 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)
|
Ejemplos
En este ejemplo de código se muestra un patrón de uso típico para este evento. Muchos de los ejemplos xaml usan este código, por ejemplo, el ejemplo input, como parte del código subyacente del archivo app.xaml. Si examinas los ejemplos xaml, puedes encontrar el código fuente de la SuspensionManager
API de clase como se hace referencia en este código.
async protected void OnSuspending(object sender, SuspendingEventArgs args)
{
SuspendingDeferral deferral = args.SuspendingOperation.GetDeferral();
await SuspensionManager.SaveAsync();
deferral.Complete();
}
Private Async Sub OnSuspending(sender As Object, args As SuspendingEventArgs)
Dim deferral As SuspendingDeferral = args.SuspendingOperation.GetDeferral
Await SuspensionManager.SaveAsync
deferral.Complete()
End Sub
Comentarios
El sistema suspende la aplicación cada vez que el usuario cambia a otra aplicación o al escritorio y reanuda la aplicación siempre que el usuario vuelva a ella. Sin embargo, el sistema también puede finalizar la aplicación mientras se suspende para liberar recursos. Por lo tanto, debe controlar el evento Suspending para realizar las siguientes operaciones:
- Conservar el estado de sesión del usuario.
- Libere los bloqueos exclusivos en los recursos.
- Reduzca el uso de memoria si es posible. Por ejemplo, serialice los datos que sean fáciles de reconstruir en forma de objeto tras la reactivación.
- Guarde el estado de la aplicación. El evento Suspending es la única indicación de que la aplicación recibirá antes de la finalización (si ocurre). Por este motivo, debe almacenar suficiente estado de sesión (por ejemplo, el artículo actual que se lee o la posición actual de reproducción de películas) para volver a crear la misma experiencia exacta durante la activación. La guía para las aplicaciones de creación de contenido es guardar el trabajo de un usuario antes y, a menudo, pero también confirmar un guardado final durante la suspensión. Guardar datos antes de la suspensión es útil porque el controlador de eventos Suspending tiene solo 5 segundos para completar su operación.
Si la aplicación finaliza, puedes restaurar el estado de la aplicación en una invalidación del método OnLaunched . Si la aplicación se reanuda antes de que finalice, el sistema restaura automáticamente el estado de la aplicación. Debe controlar el evento Resuming solo si necesita actualizar cualquier contenido mostrado que pueda haber cambiado mientras se suspende la aplicación, como fuentes de noticias o la ubicación del usuario.