SuspensionManager中的CreateFileAsync抛出无法解释的异常

时间:2012-11-28 23:14:10

标签: windows-8 suspend

我使用网格应用程序(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方法是一个投影,所以我不能轻易地反汇编它或弄清楚为什么它“可能会失败”。

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

1 个答案:

答案 0 :(得分:0)

要检查的第一件事是Frame.Navigate should only take primitives as its parameter argument

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