winform下使用缓存

  我们都知道 asp.net的缓存类是System.Web.Caching.Cache,那么在 winform项目中如何使用缓存呢?

首先,我们要弄清楚Web程序与Winform程序的区别,一般来说,Web程序都是典型的三层架构,即数据库服务器+

web应用服务器+浏览器客户端,由于一个web服务端服务于多个客户端,这种情况下,在web应用程序上为一些静态的,

单例的,共享性的数据作缓存是很有必要,能大大提高系统性能,但是在winform程序来说,一般都是客户端程序+数据库服务器

的两层架构,即应用程序直接运行在客户端,而所谓的缓存,实质不过是可以作用于全局(整个程序域)的静态变量,

当然 加入了并发处理,更新处理等一些高级特性,由于winform程序是客户端程序,并发的几率很低,一般而言,设置 静态变量

就足以解决数据的缓存需求。当然,在某些情况下,winform也有缓存的需求,比如使用了WebService,Remoting或者WCF的分布式应用程序,

尽管客户端是winform程序,但其框架实质与Web程序是一致的,在使用了远程分布技术的服务端程序上,使用缓存是很有必要的。

当然,严格来说,这与主题 “winform下使用缓存”并不相关了,我要阐述的问题其实是在非web应用程序下如何使用缓存。

1 添加对system.web.dll的引用,直接使用System.Web.HttpRuntime.Cache。

2 使用AppDomain.CurrentDomain.SetData与GetData方法。比较简单,貌似连删除的功能都没有

3 自行实现(其实就是一个单例模式的hashtable或者dictionary,并作加锁的并发处理)

4 使用微软企业库

 

 

转载于:https://www.cnblogs.com/lindping/archive/2012/01/03/winformcache.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinForm 中的双缓冲技术用于解决控件绘制时出现的闪烁问题。默认情况下,每次绘制控件时,都会先将控件的背景清除,再重新绘制,这样会造成屏幕闪烁,影响用户体验。双缓冲技术可以先将控件的内容绘制到内存中的一个缓存区中,等绘制完成后再将缓存区的内容一次性绘制到屏幕上,从而避免了闪烁问题。 自定义控件实现双缓存的步骤如下: 1. 在控件的构造函数中,将控件的样式设置为 AllPaintingInWmPaint 和 UserPaint,这样可以让控件在每次绘制时都不会擦除背景。 2. 重写控件的 OnPaint 方法,在该方法中创建一个和控件一样大小的位图,并创建一个 Graphics 对象,将 Graphics 对象的渲染目标设置为位图,然后在 Graphics 对象上进行绘制。 3. 在 OnPaint 方法中将位图绘制到控件的绘图表面上,这样可以避免绘制时的闪烁问题。 下面是具体实现的代码示例: ```csharp public class DoubleBufferedControl : Control { public DoubleBufferedControl() { SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint, true); } protected override void OnPaint(PaintEventArgs e) { using (var bitmap = new Bitmap(Width, Height)) { using (var graphics = Graphics.FromImage(bitmap)) { // 在 graphics 上进行绘制 Draw(graphics); } // 将位图绘制到控件的绘图表面上 e.Graphics.DrawImage(bitmap, 0, 0); } } protected virtual void Draw(Graphics graphics) { // 子类可以重写该方法,在该方法中进行绘制操作 } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值