C# 使用IE缓存

C# 使用IE缓存,c#,internet-explorer,caching,interop,C#,Internet Explorer,Caching,Interop,我正在使用WPF框架用C#编写一个程序。我需要显示图像,我想缓存它们以避免不断下载它们 不过,我可以自己编写缓存代码,即已经有了缓存系统。我可以找到从IE缓存中读取条目的代码,但是我找不到任何处理向缓存中添加条目问题的代码。有没有一个好办法,或者我应该实现一个单独的缓存?我建议您实现自己的缓存。你不能依赖IE缓存保持一致,或者不被用户清除,或者其他任何东西。除非你真的将IE浏览器嵌入到应用程序的控件中,否则我认为没有理由使用它。此外,使用您自己的缓存可以创建一个更适合用途的缓存(例如,如果您需要

我正在使用WPF框架用C#编写一个程序。我需要显示图像,我想缓存它们以避免不断下载它们


不过,我可以自己编写缓存代码,即已经有了缓存系统。我可以找到从IE缓存中读取条目的代码,但是我找不到任何处理向缓存中添加条目问题的代码。有没有一个好办法,或者我应该实现一个单独的缓存?

我建议您实现自己的缓存。你不能依赖IE缓存保持一致,或者不被用户清除,或者其他任何东西。除非你真的将IE浏览器嵌入到应用程序的控件中,否则我认为没有理由使用它。此外,使用您自己的缓存可以创建一个更适合用途的缓存(例如,如果您需要存储拇指、额外元数据或其他任何内容)。

根据您下载文件的方式,这些文件可能已经添加到缓存中。你现在如何下载它们

您可以将项目添加到IE缓存。从本质上来说,你有两个选择:只需一个简单的步骤就可以完成。这是做这件事的核心方法。我假设您找到的示例使用FindFirst/FindTextUrlCacheEntry()枚举缓存,因此您应该能够非常轻松地添加CommitterCacheEntry()所需的互操作

然而,作为IE团队的前成员,我建议您不要将Wininet缓存用于任何事情,这一点是不够的。它是不可靠的,它可以从你下面清除,它经常被破坏,它有一些硬限制,它可以存储多少东西,它受到各种规则,你不理解,它将被优化的IE的使用,而不是你的


说真的,别这样。如果您确实需要缓存,请编写自己的缓存

请确保采取措施防止缓存占用大量磁盘空间和/或允许用户清除缓存。