- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在应用关闭/停用时保存应用数据。在 WP8 中我使用了 StorageFile,它只支持异步方法。
问题是(正如我在阅读 this article 时怀疑和确认的那样),简单地说,操作系统生命周期事件和异步方法不能很好地混合在一起。所以,这是行不通的(即使没有异步/等待)
private async void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
var dataSvc = SimpleIoc.Default.GetInstance<ICachedDataService>();
await dataSvc.StoreCachedDataAsync();
}
文章提出了 2 种解决方法,但似乎都不理想:
我对 (2) 的问题是,即使我尽快启动它,它仍然不能保证它有时间保存。
我对 (1) 的问题是……嗯……我使用的是 ServiceLocator/IoC 模式(我永远记不起哪个模式是什么),所以这迫使我在 ICachedDataProvider
,例如。
还有其他方法吗?是否可以将 Async 方法转换为同步方法以增加代码重用?
最佳答案
Is it possible to convert an Async method into a synchronous method to increase code reuse?
不幸的是,没有。您可以采用多种方法来包装这些方法,但没有一种是万无一失的。 This blog entry描述了各种方法。对于您的情况,我建议卸载到另一个线程;它最容易开始工作,但只有 ICachedDataProvider
是线程安全的时才会工作。
关于c# - 应用程序生命周期事件的异步方法(例如 Application_Closing),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18034516/
我正在尝试在应用关闭/停用时保存应用数据。在 WP8 中我使用了 StorageFile,它只支持异步方法。 问题是(正如我在阅读 this article 时怀疑和确认的那样),简单地说,操作系统生
我是一名优秀的程序员,十分优秀!