双缓冲解决高频率刷新界面闪烁问题(C#)

本文介绍了一个项目中如何使用双缓冲技术解决高频刷新导致的界面闪烁问题。通过将通讯、业务处理和界面更新分离到不同线程,并优化控件的OnPaint方法,实现了界面的平滑更新,提高了用户体验。

项目背景

     界面包括几百个终端模拟对象,为自定义多变形控件,在1/s次与实际终端采样通讯频率下,要求软件实时更新,实际终端有运行、停止、暂停、工作结束、断电、告警等多种实时模式,软件界面需要将各种模式用不同背景颜色表示出来,并且将电压、电流、状态等参数显示在模拟终端。

面临问题: 界面刷新闪烁,让用户视觉感觉差!

●初期方法

采用单纯开启双缓冲
this.SetStyle(ControlStyles.OptimizedDoubleBuffer |   
                    ControlStyles.ResizeRedraw |
                    ControlStyles.AllPaintingInWmPaint, true);
根本无法解决问题

●具体解决办法

a 原理部分:
    1 首先通讯、业务处理、界面线程序分开,通讯部分可开启多个子线程后台运行,采样数据、状态等。

    2业务处理部分的线程负责对采样数据的分析和存储,以及根据状态对多个通讯线程进行启动和停止,也叫就是管理线程的线程

    3 界面线程只负责更新界面状态和与响应用户交互。几百个模拟终端全屏都无法显示完全,采取分组显示更新,这样刷新频率明显下降。    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值