A execução estendida não está funcionando corretamente?

Não consigoExtendedExecution para funcionar corretamente. O problema é que oRevoked O evento não está sendo disparado até que a execução seja concluída. Se tomarmos uma amostra:

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

A documentação afirma queRevoked O evento deve ser acionado ao reiniciar o aplicativo, mas se você tentar o código com o depurador conectado, verá que a saída de depuração parece boa, mas é necessário aguardar 9000 ms para que ela apareça. Isso significa que o código é suspenso até a sessão terminar.

O maior problema é que, se você disparar isso sem o depurador conectado, iniciar o aplicativo, suspender e continuar, você verá uma tela preta por alguns segundos e o SO encerrará o aplicativo.

Estou esquecendo de algo? Alguém conseguiu funcionar corretamente?

questionAnswers(2)

yourAnswerToTheQuestion