在我的Windows商店应用程序中,我有一个等待函数,有时需要几分钟才能完成(将在其他一些线程中查询性能)。同时,如果用户将注意力集中在应用程序之外,则会崩溃。当我检查事件日志时,出现以下错误:
应用已终止,因为暂停时间太长。
我在应用程序中使用Prism。我已使用以下代码处理Application.Current.Suspending
,但始终有以下代码:
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();
}
我还重写了OnNavigatingFrom函数,用于保存导航参数(并且它没有其他功能)。
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);
}
我无法弄清楚如何解决这个问题。
答案 0 :(得分:4)
如果你暂停你的应用程序,你应该在5秒内完成它 阅读Application.Suspending
暂停之前保存数据非常有用,因为Suspending事件 处理程序只有5秒钟来完成其操作。
因此,应用程序正常工作可以更好地保存大量数据 您还可以阅读Guidelines for app suspend and resume
在UWP中,您还可以借助扩展执行来延长暂停时间