- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Win RT 应用程序在 Windows 8 beta 上与 VS2012RC 一起使用,现在在 Visual Studio 和 Windows 8 pro 的最终版本中出现了问题,即在 OnSuspending 中创建/打开文件仅在我将调试器断点设置为文件创建方法。
private void OnSuspending(object sender, SuspendingEventArgs e){
var deferral = e.SuspendingOperation.GetDeferral();
if (null != m_document) Save();
deferral.Complete();
}
async void Save(){
var folder = KnownFolders.DocumentsLibrary;
var file = await folder.CreateFileAsync(GetFileName(),Windows.Storage.CreationCollisionOption.ReplaceExisting);
var xDoc = GetXDocument();
using (var stream = await file.OpenStreamForWriteAsync()){
xDoc.Save(stream);
}
}
StorageFile file = await
folder.CreateFileAsync(...
上设置断点,调试器进入,如果我StorageFile file = await folder.CreateFileAsync(...
行下方设置断点,调试器永远不会进入! folder.OpenStreamForWriteAsync
的版本,具有相同的效果。
最佳答案
问题是对 Save 方法的调用。只有第一部分(创建文件)被等待,第二部分(保存 XML)是异步完成的,因此挂起操作的推迟直到保存过程结束。
避免此问题的可能解决方案是显式等待保存操作的完成。这可以通过将 OnSuspending 方法声明为 aysnc
来实现。然后用await关键字等待save操作完成(注意保存方法的Task返回类型)。
private async void OnSuspending(object sender, SuspendingEventArgs e){
var deferral = e.SuspendingOperation.GetDeferral();
if (null != m_document) await Save();
deferral.Complete();
}
async Task Save(){
var folder = KnownFolders.DocumentsLibrary;
var file = await folder.CreateFileAsync(GetFileName(),Windows.Storage.CreationCollisionOption.ReplaceExisting);
var xDoc = GetXDocument();
using (var stream = await file.OpenStreamForWriteAsync()){
xDoc.Save(stream);
}
}
关于windows-8 - 从 App.OnSuspending 调用时 StorageFolder.CreateFileAsync 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11996288/
我正在开发一个需要在本地存储之外创建文件的 UWP 应用。我使用文件夹选择器让用户选择输出目录,然后我使用 LocalSettings 存储该选择并将文件夹添加到 FutureAccessList。
当我调用下面的函数时,它应该创建一个 .txt 文件并在其中写一个句子。它似乎没有任何错误地执行。但是我找不到这个文件在创建后存储/定位的位置。我运行 Windows 搜索来查找该文件,但没有任何结果
我的 Win RT 应用程序在 Windows 8 beta 上与 VS2012RC 一起使用,现在在 Visual Studio 和 Windows 8 pro 的最终版本中出现了问题,即在 OnS
我正在尝试将文件存储到 Windows Phone 8.1 应用程序的应用程序存储中,但它总是失败并出现系统。UnauthorizedAccessException。 异常发生在下面一行(之前没有相关
我有一个 UWP 应用程序,我正在尝试使用以下代码保存配置文件。这适用于未选中并处于 Debug模式的 Compile with .NET Native 工具链。但是,一旦使用 .NET Native
我是一名优秀的程序员,十分优秀!