2016-04-29 11 views
0

In meiner Windows-Store-Anwendung habe ich eine Funktion abwarten, die manchmal einige Minuten dauert (wird über die Leistung in einem anderen Thread beraten). Wenn ein Benutzer sich dagegen außerhalb der Anwendung konzentriert, stürzt er ab. Als ich das Ereignisprotokoll überprüfte, bekam ich folgende Störung:Windows UWP, Anwendung stürzt während des asynchronen Anrufs ab

App was terminated because it took too long to suspend.

Ich verwende Prisma in der Anwendung. Ich habe Application.Current.Suspending, mit folgendem Code behandelt (die immer genannt wird):

protected void OnApplicationSuspending(object sender, SuspendingEventArgs e) 
    { 
     var defferal = e.SuspendingOperation.GetDeferral(); 
     if (sessionStateService.SessionState.ContainsKey("plotId")) 
     { 
      sessionStateService.SessionState.Remove("plotId"); 
     } 

     sessionStateService.SessionState.Add("plotId", Plot.Id); 

     if (sessionStateService.SessionState.ContainsKey("Page")) 
     { 
      sessionStateService.SessionState.Remove("Page"); 
     } 

     sessionStateService.SessionState.Add("Page", "OperationRecording"); 

     defferal.Complete(); 
    } 

ich auch OnNavigatingFrom Funktion außer Kraft gesetzt habe, zum Speichern der Navigationsparameter (und es tut nichts anderes).

public override void OnNavigatingFrom(NavigatingFromEventArgs e, Dictionary<string, object> viewModelState, bool suspending) 
    { 
     if (viewModelState.ContainsKey("plotId")) 
     { 
      viewModelState.Remove("plotId"); 
     } 

     viewModelState.Add("plotId", Plot.Id); 

     base.OnNavigatingFrom(e, viewModelState, suspending); 
    } 

Ich bin nicht in der Lage, herauszufinden, wie dieses Problem zu beheben.

Antwort

3

Wenn Sie Ihre App anhalten, sollten Sie sie in 5 Sekunden beenden. Application.Suspending
lesen

Saving data prior to suspension is useful because the Suspending event handler has only 5 seconds to complete its operation.

Also, besser große Datenmenge durch Anwendung Arbeits speichern.
Sie können lesen Sie auch Guidelines for app suspend and resume

In UWP können Sie auch Zeit größer mit Hilfe der erweiterten Ausführung suspendiert machen