0

我使用 Grid App (XAML) 模板创建了一个新的 Windows 应用商店应用项目。我在不更改任何代码的情况下运行了项目(在调试模式下)。在它运行时,我切换回 Visual Studio 并单击工具栏中的Suspend按钮。

此时,应用程序抛出了一个 SuspensionManagerException。异常的详细信息并没有太大帮助。消息是SuspensionManager failed。它有(到目前为止)无用的 HResult -2146233088。它还有一个同样无用的 InnerException。它的消息是Error HRESULT E_FAIL has been returned from a call to a COM component.,它的 HResult 是-2147467259,甚至比外部异常的 HResult 还要糟糕。

引发异常的代码行在 中SuspensionManager,这也是项目模板的一部分。这是行:

StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(sessionStateFilename, CreationCollisionOption.ReplaceExisting);

触发异常的部分是LocalFolder.CreateFileAsync(…). CreateFileAsync 方法的 MSDN 文档有一个“备注”部分,内容如下:If you try to create a file in a virtual folder like a library or a file group, this method may fail.

而已。没有解释为什么它可能会失败,也没有描述它可能失败的条件,或者你能做些什么。

碰巧的是,即使它失败了,文件实际上也被创建了。有问题的文件被调用_sessionState.xml并位于C:\Users\<username>\AppData\Local\Packages\<package_id>\LocalState. 如果我删除文件并重新挂起应用程序,则会再次引发异常并重新创建文件。

我搜索了高低,并没有找到任何结论。CreateFileAsync 方法是一个投影,所以我不能轻易地拆开它或弄清楚它“可能失败”的原因。

有谁知道可能导致此问题的原因,或者如何进行调试或解决它?

4

1 回答 1

0

首先要检查的是它Frame.Navigate应该只以原语作为它的parameter参数

另外,请确保您正在调用GetDeferral事件async处理程序。

于 2012-11-29T01:32:27.713 回答