我使用 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 方法是一个投影,所以我不能轻易地拆开它或弄清楚它“可能失败”的原因。
有谁知道可能导致此问题的原因,或者如何进行调试或解决它?