Windows store apps Windows UWP,异步调用期间挂起时应用程序崩溃

Windows store apps Windows UWP,异步调用期间挂起时应用程序崩溃,windows-store-apps,windows-10-universal,Windows Store Apps,Windows 10 Universal,在我的Windows应用商店应用程序中,我有一个等待函数,有时需要几分钟才能完成(将咨询其他线程的性能)。同时,如果用户不关注应用程序,它就会崩溃。当我检查事件日志时,出现以下错误: 应用程序已终止,因为挂起时间太长 我在应用程序中使用棱镜。我已经处理了Application.Current.Suspending,代码如下(通常被调用): 我还重写了onNavigationFrom函数,用于保存导航参数(它不做任何其他事情) public override void OnNavigatingFr

在我的Windows应用商店应用程序中,我有一个等待函数,有时需要几分钟才能完成(将咨询其他线程的性能)。同时,如果用户不关注应用程序,它就会崩溃。当我检查事件日志时,出现以下错误:

应用程序已终止,因为挂起时间太长

我在应用程序中使用棱镜。我已经处理了
Application.Current.Suspending
,代码如下(通常被调用):

我还重写了onNavigationFrom函数,用于保存导航参数(它不做任何其他事情)

public override void OnNavigatingFrom(NavigatingFromEventArgs e,Dictionary viewModelState,bool挂起)
{
if(viewModelState.ContainsKey(“plotId”))
{
viewModelState.Remove(“plotId”);
}
viewModelState.Add(“plotId”,Plot.Id);
base.OnNavigatingFrom(e,viewModelState,挂起);
}

我无法确定如何解决此问题。

如果暂停应用程序,应在5秒钟内完成。
阅读

在挂起之前保存数据很有用,因为挂起事件 处理程序只有5秒钟完成其操作

因此,由于应用程序工作,最好保存大量数据。
你也可以阅读


在UWP中,您还可以通过延长执行时间来延长暂停时间

如果您暂停应用程序,则应在5秒内完成。
阅读

在挂起之前保存数据很有用,因为挂起事件 处理程序只有5秒钟完成其操作

因此,由于应用程序工作,最好保存大量数据。
你也可以阅读

在UWP中,您还可以通过延长执行时间来延长暂停时间

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