windows-8 – 从App.OnSuspending调用时,StorageFolder.CreateFi
发布时间:2020-12-14 02:54:09 所属栏目:Windows 来源:网络整理
导读:我的Win RT应用程序在 Windows 8测试版上与VS2012RC一起使用,现在已经有了最终版本的visual studio和windows 8 pro的问题,在OnSuspending中创建/打开文件只有在我将调试器断点设置为文件创建方法. private void OnSuspending(object sender,SuspendingEventA
我的Win RT应用程序在
Windows 8测试版上与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.OpenStreamForWriteAsync的版本,效果非常相似. 解决方法
问题是调用Save-method.仅等待第一部分(创建文件),第二部分(保存XML)完成异步,因此挂起操作的延迟直到保存过程结束.
避免此问题的可能解决方案是明确等待以完成保存操作.这可以通过将OnSuspending方法声明为aysnc然后等待使用await关键字完成save操作来完成(请注意Save-method的Task return-type). 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); } } 我希望这篇文章可以帮助那些陷入同样陷阱的人(我想知道为什么问题没有出现在w8的测试版中,但我认为MS已经优化了应用程序终止过程,因此时间更短暂停过程后的意外工作)… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在Windows/Linux/Mac上的Java程序中对全局热键进行响应?
- 隐藏Microsoft Sql Server 2008R2及更高版本上的登录数据库
- windows-server-2012 – 通过远程桌面缓慢登录到Server 201
- windows – 为什么Perl会抱怨“包含换行符的文件名不成功”
- Windows – Win32 EXCEPTION_INT_OVERFLOW与EXCEPTION_INT_
- windows-phone-7.1 – 将免费的Windows手机应用程序更改为付
- 从Windows 8批量删除Features On Demand有效负载?
- powershell 基础
- 文件 – 实时图块不从孤立存储中拾取图像
- windows-phone-7 – WP7 – 确定文化是英制的还是公制的
推荐文章
站长推荐
热点阅读