FilePicker 在画廊中不断崩溃(WP 8.1 RT)

FilePicker keeps crashing in gallery (WP 8.1 RT)

我有一个 Windows Phone 8.1 RT 应用程序,我在其中使用图库中的 FilePicker API 到 select 图像。但是,当用户 select 在图库中浏览图像时,该应用程序不断崩溃。

应用程序在两种不同的情况下崩溃:

  1. 用户打开 filepicker 浏览图库中的图像,在浏览时应用程序终止并关闭图库(显示 WP 8.1 的主屏幕)。

  2. 用户 selects 一些文件并按下完成按钮,此时应用程序开始恢复,但在恢复时失败并崩溃(显示主屏幕).

除此之外,文件选择器工作正常,但以上两次崩溃一直间歇性发生。这些崩溃有什么修复方法吗?

应用程序崩溃是因为 OnSuspending() 方法完成执行花费了太多时间。因此,OS 不断终止应用程序。

应用程序崩溃的场景如下:

  1. FilePicker API 被调用,用户被导航到图库视图。同时,OnSuspending()方法仍在执行,由于方法中的lock需要等待,该方法一直没有返回,迫使OS强行终止应用程序,而用户仍在画廊视图中。 OS 的强制终止基本上也终止了 FilePicker API,画廊视图也被关闭,将用户带回主屏幕。

  2. 这个场景和上面类似。除了,OS 不会在图库仍然打开时终止应用程序。用户从图库中选择项目后,OS 开始恢复应用程序并尝试调用 OnResuming 方法。但它意识到应用程序尚未终止并且 OnSuspending 方法仍在执行(等待获取 lock 对象)。当 OS 尝试恢复仍未挂起的应用程序时会发生这种状态不匹配导致 OS 终止应用程序。

我基本上确保了 OnSuspending 方法快速返回以修复上述崩溃。