Extended Execution funktioniert nicht richtig?

Ich kann nicht @ bekommExtendedExecution, um richtig zu arbeiten. Das Problem ist, dass dasRevokedas @ -Ereignis wird erst ausgelöst, wenn die Ausführung abgeschlossen ist. Wenn wir eine Probe nehmen:

private async void OnSuspending(object sender, SuspendingEventArgs e)
{
    Debug.WriteLine("Suspending in app");
    var deferral = e.SuspendingOperation.GetDeferral();
    using (var session = new ExtendedExecutionSession())
    {
        session.Reason = ExtendedExecutionReason.SavingData;
        session.Description = "Upload Data";
        session.Revoked += (s, a) => { Debug.WriteLine($"Extended execution revoked because of {a.Reason}"); };
        var result = await session.RequestExtensionAsync();
        if (result == ExtendedExecutionResult.Denied) Debug.WriteLine("Extended execution failed");
        else
        {
            Debug.WriteLine("Executing");
            await Task.Run(() => { Task.Delay(9000).Wait(); Debug.WriteLine("Finished the task"); });
            Debug.WriteLine("Executing finished");
        }
        Debug.WriteLine("Suspending after execution");
    }
    deferral.Complete();
}

Die Dokumentation besagt, dassRevokedas @ -Ereignis sollte nach dem Fortsetzen der App ausgelöst werden. Wenn Sie jedoch den Code mit dem angehängten Debugger testen, wird die Debug-Ausgabe anscheinend in Ordnung sein, Sie müssen jedoch 9000 ms warten, bis sie angezeigt wird. Dies bedeutet, dass der Code ausgesetzt wird, bis die Sitzung beendet ist.

Das größte Problem ist, dass, wenn Sie dies ohne Debugger starten, die App starten, anhalten und dann fortsetzen, für einige Sekunden ein schwarzer Bildschirm angezeigt wird und das Betriebssystem Ihre App dann beendet.

Bin ich etwas vermisst? Hat jemand es richtig funktioniert?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage