我使用网格应用程序(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方法是一个投影,所以我不能轻易地反汇编它或弄清楚为什么它“可能会失败”。
是否有人知道可能导致此问题的原因,或者如何进行调试或解决?
答案 0 :(得分:0)
要检查的第一件事是Frame.Navigate
should only take primitives as its parameter
argument。
另外,请确保在GetDeferral
事件处理程序中调用async
。