如何创建临时文件来缓存库的启动工作?

时间:2012-10-27 15:54:50

标签: c# .net caching temporary-files

我正在开发一个C#库,它在启动时执行一些昂贵的计算。我想缓存这个计算,以便每次应用程序重新启动时都不支付成本(想想EF和预编译的视图)。

我想要缓存的信息很容易写入文本格式的文件。因此,我想在调用库时执行以下操作:

  1. 生成配置参数的唯一哈希值。
  2. 检查是否有该哈希的缓存文件。如果是这样,请将其读入并使用它来跳过设置计算。
  3. 如果没有,请执行设置计算并生成由配置参数的哈希命名的相应缓存文件。
  4. 此外,我不想永久地丢弃用户的硬盘驱动器这样的文件:我希望它们能够被操作系统自动清理(很像临时文件)到可能的程度。

    另外,因为这是一个库,我不能依赖于正在安装的其他软件。因此,我更喜欢纯.NET解决方案。

    有人能指点我做一个好的方法/ .NET API来做这样的事吗?

1 个答案:

答案 0 :(得分:1)

您应该使用ApplicationData目录来存储缓存文件,例如:

var cacheDir = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), 
    "MyApplicationName");

如果要进行自动清理,可以在安装过程中创建空缓存文件,以便在卸载应用程序时自动删除该文件。或者在应用程序的安装程序类中自己编写清理方法。

我不认为你可以依靠操作系统来进行清理,Windows甚至无法清理自己的垃圾文件。