【发布时间】:2023-03-24 11:03:02
【问题描述】:
我正在尝试在应用关闭/停用时保存应用数据。 在 WP8 中我使用了 StorageFile,它只支持 Async 方法。
问题是(正如我在阅读this article 时怀疑并确认的那样),简单地说,操作系统生命周期事件和异步方法不能很好地混合在一起。所以,这不起作用(即使没有 async/await)
private async void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
var dataSvc = SimpleIoc.Default.GetInstance<ICachedDataService>();
await dataSvc.StoreCachedDataAsync();
}
文章提出了 2 种解决方法,但似乎都不理想:
- 使用不同的 API,例如隔离存储而不是 StorageFolder/File,后者支持同步操作。
- 随用随保存与最终保存
我对 (2) 的问题是,即使我尽快启动它,它仍然不能保证它有时间保存。
我对 (1) 的问题是……嗯……我正在使用 ServiceLocator/IoC 模式(我不记得哪个模式是什么),所以这迫使我在 @ 的接口中引入同步操作例如 987654323@。
还有其他方法吗?是否可以将 Async 方法转换为同步方法以增加代码重用?
【问题讨论】:
标签: c# windows-phone-8 async-await