2014-06-08 5 views
34

Ich habe ein Problem mit dem Aussetzen des Ereignisses unter Windows Phone 8.1 mit WinRT, es wird nicht ausgelöst. Ich weiß nicht warum. Dies ist mein Code:Das Aussetzen des Ereignisses wird nicht mit WinRT ausgelöst

/// <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(); 
} 

stelle ich einen Haltepunkt auf der Linie var deferral = e.SuspendingOperation.GetDeferral(); und debuggt es mit Visual Studio. Dann drückte ich den Startknopf an meinem Telefon und lief eine weitere App und wartete ca. 10 Sekunden. OnSuspending wird nicht ausgeführt.

Irgendwelche Ideen?

Antwort

63

Suspending Ereignis wird nicht ausgelöst, während Sie debuggen (aber während App normalen läuft, wird es nur Feuer, nachdem Sie aus dem App navigieren weg), wie es bei this blog auch gesagt wird:

.. .Sie werden immer darauf warten, dass diese ausgelöst werden, obwohl Ihre App auf dem Bildschirm hin und her schaltet! Der Grund ist einfach: Während eine Anwendung debuggt, wird Windows nicht angehalten.

Beachten Sie, dass dies einige seltsame App Verhalten führen kann, wenn es etwas falsch in Suspending Ereignis ist - zum Beispiel, wenn Sie einige komplexe Klasse in Frame.Navigate Methode übergeben und Sie verwenden SuspensionManager. Während das Debuggen Ihrer App gut funktioniert (keine Sperrung), stürzt sie jedoch ohne den Debug-Modus ab.

Um zu testen, wie Ihre App verhält, werden Sie zu haben rufen die Suspending manuallt, geöffnet (oder einen Satz sichtbar) Debug Lage Symbolleiste in Visual Studio, dort finden Sie ein Drop-Down-Lifecyce Ereignisse, wählen Sie dort Suspend, und dann die App zurückgeben - Resume.

enter image description here

+0

Könnten Sie bitte einen Beweis Link zur Verfügung stellen? – CAMOBAP

+3

@CAMOBAP Ein Beweis Link zu was? – Romasz

+0

Proof-Link für die Anweisung "Das Aussetzen des Ereignisses wird nicht ausgelöst, während Sie debuggen" (falls es existiert) – CAMOBAP

Verwandte Themen