c# - valid - Evento de suspensión sin aumentar con WinRT
tag c# (1)
Tengo un problema con la suspensión de eventos en Windows Phone 8.1 con WinRT, no se activa. No sé por qué. Este es mi código:
/// <summary>
/// Initializes the singleton application object. This is the first line of authored code
/// executed, and as such is the logical equivalent of main() or WinMain().
/// </summary>
public App()
{
InitializeComponent();
Suspending += OnSuspending;
#if DEBUG
this.displayRequest = new DisplayRequest();
#endif
}
/// <summary>
/// Invoked when application execution is being suspended. Application state is saved
/// without knowing whether the application will be terminated or resumed with the contents
/// of memory still intact.
/// </summary>
/// <param name="sender">
/// The source of the suspend request.
/// </param>
/// <param name="e">
/// Details about the suspend request.
/// </param>
private void OnSuspending(object sender, SuspendingEventArgs e)
{
var deferral = e.SuspendingOperation.GetDeferral();
deferral.Complete();
}
Establecí un punto de interrupción en la línea var deferral = e.SuspendingOperation.GetDeferral();
y lo depuré con Visual Studio. Luego presioné el botón de inicio en mi teléfono y ejecuté otra aplicación y esperé unos 10 segundos. OnSuspending
no se está ejecutando.
¿Algunas ideas?
La suspensión del evento no se activará mientras esté depurando (pero mientras ejecuta su aplicación de manera normal, se activará justo después de que salga de la aplicación) como se dice también en este blog :
... esperará para siempre a que se disparen, ¡aunque su aplicación vaya y vuelva a la pantalla! La razón es simple: mientras se depura una aplicación, Windows no la suspenderá.
Tenga en cuenta que esto puede conducir a un comportamiento extraño de la aplicación, cuando hay algo mal en el evento de suspensión , por ejemplo, si pasa alguna clase compleja en el método Frame.Navigate y utiliza SuspensionManager . Si bien la depuración de su aplicación funcionará bien (sin suspensión), se bloqueará sin el modo de depuración.
Para probar cómo se comporta su aplicación, deberá invocar el manual Suspensión manual, abrir (o establecer visible) la barra de herramientas Ubicación de depuración en Visual Studio, allí encontrará los eventos desplegables de Lifecyce, elija Suspender y luego devolver la aplicación - Reanudar .