c# - 用户控件中有很多开销吗?

标签 c# winforms performance .net-3.5 user-controls

我正在处理一个感觉迟缓的 WinForms 项目。它由数百个用户控件组成。如果有一部分 UI 功能(即使未在应用程序的其他任何地方使用),它会封装在用户控件中。我已经使用 ANTS 探查器多次完成该项目,大部分繁重的代码似乎都在各种控件构造函数中。

在我开始删除用户控件之前,它们是否代表了 WinForms 应用程序的大量开销,而不是仅布置没有用户控件的表单(例如,仅内部控件)?

最佳答案

用户控件是其他控件的容器。拥有数百个可能意味着您的项目中有数百个窗口。窗口是一个非常昂贵的操作系统对象。当您拥有超过 50 个左右时,它们开始明显拖累绘画性能。

与 Outlook 的比较是恰当的。这是一个很好的程序 block 。它只有不到 50 个窗口。使用 Spy++ 很容易看到。

区别在于 OnPaint。 Microsoft 编写了很多代码,他们并没有在表单上放置很多控件。

关于c# - 用户控件中有很多开销吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3472850/

相关文章:

c# - NTextCat 是如何工作的

.net - "Check on node text click"用于 WinFormTreeView

c# - 如何使用 newtonsoft json 解析 3 级嵌套数组

winforms - WinForms ReportViewer 在 .NET 4.0 中是否有额外的部署依赖项?

c# - 在表单标题栏 C# 上创建 Firefox 4 样式按钮和下拉菜单

linux - linux中计算多个进程cpu使用率的有效方法

performance - CUDA,相同工作的更多线程 = 尽管占用率更高,但运行时间更长,为什么?

performance - 为什么我们将结果发送给用户时需要 HTTPS

c# - 基于大小限制滚动文件附加程序并使用时间戳进行备份

c# - 在 Crystal 报表中水平重复对象?