客户端缓存C#表单应用程序

时间:2012-07-13 08:32:16

标签: c# windows c#-4.0

我有一个查询数据库记录的应用程序。记录数量可能达到数千,这可能会突显进程的记忆并最终导致崩溃或响应缓慢。

分页查询是此解决方案,但记录中的信息始终在不断变化。因此,为了提供独特的体验,我们不得不在用户进行查询时显示可用的信息。

使用分页可以动态更新从页面移动到页面的内容。我相信客户端缓存可以解决这个问题。

我发现的一种方法是将结果以XML格式存储到磁盘并使用LINQ to XML进行查询。是否有任何经验证的客户端缓存机制可以与桌面应用程序(而不是Web)一起使用

2 个答案:

答案 0 :(得分:2)

查看http://msdn.microsoft.com/en-us/library/ff664753之类的模式 它讨论了企业库缓存应用程序块的使用,它允许开发人员在其应用程序中加入本地缓存。

另请阅读http://www.codeproject.com/Articles/8977/Using-Cache-in-Your-WinForms-Applications

Enterprise Library 5.0可以在http://msdn.microsoft.com/en-us/library/ff632023

找到

答案 1 :(得分:1)

除非您让缓存无限增长,否则内存使用不应成为问题。预取用户可能永远不会看到的太多页面,或者保留用户长时间未查看的页面几乎没有什么好处。动态获取下一页/上一页将保持高性能,但您应该从已编辑或超过特定时间跨度的缓存页中清除。从缓存中清除只需要丢弃对页面的所有引用(例如,将其从任何列表或词典中删除)并允许垃圾收集器完成其工作。

您还可以将WeakReference存储到您的对象中,并让垃圾收集器在需要时收集您的对象,但这样可以减少对未缓存内容的控制。

或者,有一些非常好的第三方解决方案,特别是如果它是一个网格控件。 DevExpress grid controls具有出色的服务器模式,可以处理具有良好性能的非常大的数据集。