[已解决问题] winform 中有类似缓存(Cache)的东西吗?
提问时间: 2008-05-06 17:29
悬赏分:20 浏览:118 次

是这样的,timer控件感觉不太好用(我选中一个复选框等向选第二个时又重新绑定了)

也可能是不会用timer吧。所以想找类似asp.net中cache的东西。

不知道有没有这种东西,望高手指教。


最佳答案
楼主问的此问题有些意思。
如果楼主问WinForm中是否有类似缓存的机制存在,那么我同样问楼主一个问题,在WebForm中缓存存在的意义是什么呢?
个人理解如下:
一、在WebForm中主要是为了减轻Web服务器压力,在客户端提供了缓存机制,当用户访问的网页内容无变化的请求时就会调用缓存中的内容,这样一来减轻了服务器压力,避免无必要的重复操作,二来使用户网页浏览速度加快,用户体验更好。WebForm是“瘦客户端”。
二、在WinForm中,是否有必要减轻数据库等各类服务器压力呢?这些服务器在WebForm中也一般都是存在的,然而WinForm是把这些压力都集中在了客户端,不像WebForm是把这些压力集中到了Web服务器上,因此本来这就是一种“胖客户端”,再在客户端开放类似“瘦客户端”的缓存,岂不是类似“画蛇添足”,给客户端“火上浇油”吗?这是其一,其二WinForm并不会刷新自己的WinForm窗体,所以不会有明显用户体验不悦感,因此也就没有什么窗体的浏览速度的说法。

对于问题的解答:
据我所知,WinForm并没有缓存窗体等类似机制。如果你所问的类似缓存的机制是指对数据的存储更新问题,也就是说用户没有更新数据时是不往数据库服务器发送的,那么,方法一是你可以判断DataSet(客户端内存中)的数据是否更新,然后再决定是否调用提交数据的模块;方法二直接根据空间的焦点等来控制按钮的可用或可见属性。其他非数据库更新的做法与前述方法类似,这里就不重复阐述了,这样同样能减轻数据库服务器无必要的压力。

附:其实是否避免数据库服务器这种无必要的压力,也不会像WebForm那样考虑的太多,一般较好的服务器都是可以承受这种压力的,那要看你如何组织Sql语句,提交更新数据的方法了,如果方法得当这种压力并没有什么不可以的。

给楼主的建议:
从楼主的问题中不难猜测楼主原先不是开发C/S架构(WinForm)程序的,而是从B/S架构(WebForm)程序开发转到C/S架构程序开发中来的。那么希望楼主抛开一些B/S架构的知识,重新学习认识C/S架构的知识,毕竟B/S架构(WebForm、瘦客户端)和C/S架构(WinForm、胖客户端)是有区别的。
5/7/2008 2:44:46 AM 回答者:刚刚


提问者对于答案的评价:我用了缓存依赖的那张表,又写了个静态方法,然后在外面调它 实现了。 谢谢,您的建议!同样谢谢你的回答!
其它回答(3)
不知HttpRuntime.Cache是不是你要找的東東!
其實,HttpContext.Current.Cache本質上就是使用了HttpRuntime.Cache.
1周前   回答者:Koy - 菜鸟二级
同楼上,直接用HttpRuntime.Cache就行了.
1周前   回答者:deerchao - 老鸟四级
WinForm没有像 HTTP那样的缓存,

WinForm运行后,所有数据都会在内存中,根据情况,会释放一部分(GC,垃圾回收)
另外,你要缓存什么?如果是数据库的话,用一个DataSet的就可以了,因为在内存中保存
如果希望关闭程序后也可以,就要将数据保存起来了
1周前   回答者:G yc {Son of VB.NET} - 小虾三级
评论
1周前   deerchao :
需要Cache的东西不一定是从数据库出来的.
比如可能是需要解析的文件数据,可能是目录/文件结构等等.
   您需要登录以后才能回答!
我的问题    我要提问


快到期问题

> 问题排行榜

有不合适内容,建议去除