微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何快速加载winforms应用程序

我有一个 winforms应用程序.主窗体有很多控件,这是导致加载非常慢的原因之一.我想做的是使表单加载更快.

我已经设置了beginupdate和endupdate.表单未在后台工作线程中呈现,因为这是主要表单.没有初始表格.当用户单击应用程序图标时,这是第一个加载的表单.添加进度条或任何初始形式对我来说不是一个好主意.

我已经在Stack溢出检查了其他问题,但它们似乎没有像我一样面临同样的问题.

如果您有一些想法/想法,如果您可以与我分享,那将是您的好事.

感谢致敬
Gagan Janjua

解决方法

一些建议:

>尽量减少UI的复杂性.您的用户会感谢您,并且您将加载更少的控件.例如,如果你有3个或4个不经常使用的控件,你可以将它们移动到对话框或折叠表单的“高级”部分,这样你可以推迟创建/显示它们吗?是否需要所有控件?真?想想您要实现的工作流程 – 当前的控件集是实现工作流程的最简单方法吗?是否需要立即显示所有控件?也许您可以将它们放在选项卡控件中的单独选项卡上(因此实际上只有在显示选项卡时才创建控件)?
>您可以减少使用的控件类型范围吗?每种新类型的控件都可能导致程序加载一个新的dll来支持它.每个必须初始化的dll都会导致额外的启动时间.
>您使用的是任何启动缓慢的控件吗?简单的文本字段将很快,但复杂的图形控件可能很慢.
>加载了多少个(自己的)程序集?将所有代码组合到一个程序集中(例如使用ILMerge),加载时间可能会相当大.
>删除不需要的任何初始化代码.你能简化初始化吗?可以延迟任何初始化(例如,当用户点击实际需要存在该数据的第一个按钮时,仅创建一些成员变量,如果实际上还不需要,则不要尝试创建与数据库的连接等)
>你能推迟创建(部分)用户界面吗?例如,您可以将一组控件放入单独的UserControl表单中,然后在启动后不久以编程方式将此表单添加到MainForm(例如,在计时器上).这将允许您的MainForm非常快速显示,然后在使用其他控件后不久“填充”,这可能无法改善实际的启动时间,但它会“感觉”更快,响应更快. (如果您的MainForm滚动并且这些额外的控件最初不在屏幕上,这种方法也非常有效,因为只有在用户向下滚动才能看到它们时才需要创建它们)
>您是否显示可能加载缓慢的任何信息(例如,大型位图图像或从sql服务器获取的数据)?你能推迟加载它们还是作为后台线程运行?使用压缩来加速加载?降低其分辨率以最小化必须加载的数据量?预处理数据并将其存储在快速启动缓存中,以便下次运行程序时?
>是否可以通过优化方法替换某些控件?例如您可以创建一个“按钮栏”作为一组10个单独的控件,或者作为一个控件,使用10个按钮的外观绘制iself.单个控件初始化和重绘速度比10个独立控件更容易.

当然,一旦收集到最明显的低悬的水果(甚至之前):

>在分析器下运行程序,看看它花时间在哪里.

原文地址:https://www.jb51.cc/csharp/244344.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐