Windows phone 8.1 (WinRT) 和 Windows phone 10 (UWP) 应用程序暂停程序
Windows phone 8.1 (WinRT) and Windows phone 10 (UWP) app suspending procedure
我在 windows 商店中发布了一个 windows 8.1/windows phone 8.1 (WinRT) 应用程序。该应用程序使用 Windows.UI.Xaml.Application.Suspending
事件处理程序将重要的应用程序状态和统计信息保存到一组文件中(不使用内置设置 API 是有原因的)。为了成为 "a good boy" 我尽量遵守 Windows.ApplicationModel.SuspendingOperation.Deadline
并尽可能明确地调用 Windows.ApplicationModel.SuspendingOperation.GetDeferral()
。
问题如下:
我必须在截止时间之前调用 Windows.ApplicationModel.SuspendingDeferral.Complete()
方法吗?
如果我未能在截止日期前调用它,是否会有明显的处罚?它是否使我的应用程序 "unresponsive" 从某些系统监视的角度来看?
在调用 Windows.ApplicationModel.SuspendingDeferral.Complete()
的那一刻,仍然是 运行 的线程会发生什么情况?他们会被冻死吗?
"async" 线程(即隐式 TPL 线程)或 ThreadPool.RunAsync
和 UI 线程在应用挂起过程中的行为是否有任何差异?
我是否有义务在调用 Windows.ApplicationModel.SuspendingDeferral.Complete()
之前明确取消所有异步任务,即我拥有的 System.Threading.Tasks.Task
个实例?
这里有一篇关于 RT 应用程序生命周期的非常好的文章:What You Need To Know About Suspend and Resume in WinRT。
如果您没有在 SuspendingOperation.Deadline
过期之前调用 Complete
方法,则会发生超时并且 Windows 猜测您的应用程序发生了错误......并且,而不是被暂停, 它将被终止。
所以,你应该完成你的工作并在 Dedline 之前调用 Complete。
我在 windows 商店中发布了一个 windows 8.1/windows phone 8.1 (WinRT) 应用程序。该应用程序使用 Windows.UI.Xaml.Application.Suspending
事件处理程序将重要的应用程序状态和统计信息保存到一组文件中(不使用内置设置 API 是有原因的)。为了成为 "a good boy" 我尽量遵守 Windows.ApplicationModel.SuspendingOperation.Deadline
并尽可能明确地调用 Windows.ApplicationModel.SuspendingOperation.GetDeferral()
。
问题如下:
我必须在截止时间之前调用
Windows.ApplicationModel.SuspendingDeferral.Complete()
方法吗?如果我未能在截止日期前调用它,是否会有明显的处罚?它是否使我的应用程序 "unresponsive" 从某些系统监视的角度来看?
在调用
Windows.ApplicationModel.SuspendingDeferral.Complete()
的那一刻,仍然是 运行 的线程会发生什么情况?他们会被冻死吗?"async" 线程(即隐式 TPL 线程)或
ThreadPool.RunAsync
和 UI 线程在应用挂起过程中的行为是否有任何差异?我是否有义务在调用
Windows.ApplicationModel.SuspendingDeferral.Complete()
之前明确取消所有异步任务,即我拥有的System.Threading.Tasks.Task
个实例?
这里有一篇关于 RT 应用程序生命周期的非常好的文章:What You Need To Know About Suspend and Resume in WinRT。
如果您没有在 SuspendingOperation.Deadline
过期之前调用 Complete
方法,则会发生超时并且 Windows 猜测您的应用程序发生了错误......并且,而不是被暂停, 它将被终止。
所以,你应该完成你的工作并在 Dedline 之前调用 Complete。