Why does Isolated storage not delete the last two temporary files when exiting on a Windows Phone 7?
我编写了一个使用独立存储存储数据的应用程序,我想在数据变旧时定期清除这些数据。我编写了一个从 Closing 调用的函数,该函数检查旧数据的隔离存储并将其删除。
这个程序也将删除目录中的最后两个文件之外的所有文件。当我调试代码时,我可以看到它对这些文件执行 DeleteFile 方法。我什至在调用 DeleteFile 后立即检查文件是否仍然存在。根据调试器它没有。
然而,当应用程序再次启动时,那些最后文件的旧数据仍然在隔离存储中。考虑到这可能是一个竞争条件,我在删除路由之后放置了一个 Thread.sleep(1000) 。
电话不遵守此延迟,并在执行 delte 代码后立即退出。我找不到与 DeleteFile 相关的刷新命令,因为当时我没有对流的引用。
有没有其他人发现这个或类似的东西?是否有我遗漏的魔术刷新方法,或者这是电话隔离存储实现中的缺陷?
我同意马特和马蒂厄的观点。
虽然也想问你有没有试过截断文件?
IsolatedStorageFileStream isfStream = new IsolatedStorageFileStream(strXMLFile, FileMode.Truncate, isf);