首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用反射设置控制样式时的效率

使用反射设置控制样式时的效率
EN

Stack Overflow用户
提问于 2012-06-05 21:37:13
回答 1查看 273关注 0票数 1

背景

目前,我正在尝试修复一些行为,如果控件太大,无法分配缓冲区,则双缓冲区会导致崩溃。

经过多次讨论和反复试验,我们决定最好的操作方法是,如果大小支持它(例如小于3000x3000像素),则对控件启用双缓冲,但是如果它超过了该大小阈值,那么我们将以编程方式关闭双缓冲。

由于GetStyle和SetStyle方法是受保护的,而且有许多第三方控件需要禁用双重缓冲,因此这样做非常烦人。为了克服这个问题,我创建了一个助手方法,它通过反射禁用双缓冲,这似乎是所有邪恶中较小的一个。然后通过布局事件监视控件的大小,并相应地设置DoubleBuffer和OptimizedDoubleBuffer标志。

问题

我不太熟悉反射,我的主要问题是通过ControlStyles方法获得/设置MethodInfo.Invoke应该会产生什么样的性能影响。

特别是,我想知道是否有助于防止通过对值进行一次读取来设置DoubleBuffer/OptimizedDoubleBuffer ControlStyles (这也必须通过反射使用GetStyle() )。或者每次只调用SetStyle()基本上是一样的。我之所以担心,是因为布局事件被称为“很多”,而且我不想仅仅因为这种双缓冲跟踪逻辑而严重降低性能。

任何输入,特别是关于我正在做的工作的性能影响,但如果任何人有一个更好的想法禁用双缓冲控制时,只有超过一定的规模。

EN

回答 1

Stack Overflow用户

发布于 2012-06-05 21:40:58

我建议您先阅读样式,看看是否需要调用SetStyle。设置样式可能会很昂贵。

与分配双缓冲区和绘图相比,只需要少量的反射访问就可以了。别想了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10905347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档