急救……Winform画面加载速度慢

Janlayn 2013-02-27 08:49:23
各位,
本人用 第三方控件“DevExpress”做一个项目,
有些画面的控件数目比较多,初次加载的时候很慢,
慢得让人受不了。

请问有什么方法解决这样的问题??
...全文
468 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanxinimm 2013-12-10
  • 打赏
  • 举报
回复
一个界面有三百个控件,都是单独的独立控件还是什么?截图看下,一个界面这么多控件为何不用一个tab 进行功能分页显示了,那么多控件操作保存都有问题,会很慢~
Janlayn 2013-03-28
  • 打赏
  • 举报
回复
引用 14 楼 adrianEvin 的回复:
控件能有多少啊 会很慢? 加载数据慢吧
有个画面空间数有300多个,根据业务,没办法减少控件数目。 都尽量优化了数据处理的算法。 感觉还是不理想~~
Janlayn 2013-03-28
  • 打赏
  • 举报
回复
速度慢只是第一次实例化的时候,再次打开同一个画面的时候就不慢了。
adrianEvin 2013-03-28
  • 打赏
  • 举报
回复
控件能有多少啊 会很慢? 加载数据慢吧
Janlayn 2013-03-28
  • 打赏
  • 举报
回复
引用 5 楼 assky124 的回复:
1.做个Loading界面 2.减少控件数量,尽量采用集合控件,如ListView,DataGridView之类的
都有Loading界面的,但是每打开一个新画面时间有点长,用户肯定郁闷的。 画面上的控件数量,我都尽量做到最少了。
Janlayn 2013-03-28
  • 打赏
  • 举报
回复
引用 6 楼 dashuai521241 的回复:
不知道你是不是自己对他的控件二次封装,二次封装与LayoutControlGroup有一定的冲突,内存还经常不能释放(一般要强制回收资源) [DllImport("kernel32.dll")] private static extern bool SetProcessWorkingSetSize(IntPtr process, int minSiz……
没有二次封装, 也没有用layoutcontrol。
adrianEvin 2013-02-27
  • 打赏
  • 举报
回复
开一个线程提前先加载,需要的时候显示 或者搞个panel盖住加个等待的进度条
hard_learner 2013-02-27
  • 打赏
  • 举报
回复
不太好解决。
Rockstone 2013-02-27
  • 打赏
  • 举报
回复
不知道你是不是自己对他的控件二次封装,二次封装与LayoutControlGroup有一定的冲突,内存还经常不能释放(一般要强制回收资源) [DllImport("kernel32.dll")] private static extern bool SetProcessWorkingSetSize(IntPtr process, int minSize, int maxSize); public static void FlushMemory() { GC.Collect(); GC.WaitForPendingFinalizers(); if (Environment.OSVersion.Platform == PlatformID.Win32NT) SetProcessWorkingSetSize(Process.GetCurrentProcess().Handle, -1, -1); } 最好不要混用,如果窗体大小是‘不可以’改变的话建议直接用panel做容器,用它的layoutcontrol控件徒增一倍
assky124 2013-02-27
  • 打赏
  • 举报
回复
1.做个Loading界面 2.减少控件数量,尽量采用集合控件,如ListView,DataGridView之类的
legendlovehao 2013-02-27
  • 打赏
  • 举报
回复
引用 3 楼 Janlayn 的回复:
引用 1 楼 legendlovehao 的回复:DevExpress是ActiveX控件,在.NET的程序加载的时候属于非托管的范围,加载的时候消耗的资源要多一些 实例化的时候感觉很耗时,没什么方法优化了吗?
DoubleBuffered 不知道能不能帮到你!!
Janlayn 2013-02-27
  • 打赏
  • 举报
回复
引用 1 楼 legendlovehao 的回复:
DevExpress是ActiveX控件,在.NET的程序加载的时候属于非托管的范围,加载的时候消耗的资源要多一些
实例化的时候感觉很耗时,没什么方法优化了吗?
  • 打赏
  • 举报
回复
没啥好招吧。。。。
legendlovehao 2013-02-27
  • 打赏
  • 举报
回复
DevExpress是ActiveX控件,在.NET的程序加载的时候属于非托管的范围,加载的时候消耗的资源要多一些
ycproc 2013-02-27
  • 打赏
  • 举报
回复
DevExpress本来就非常"沉重"。 不过可以从数据量,加载方式上面入手优化。
  • 打赏
  • 举报
回复
8楼正解。 另外,你说的“有些画面”,你检查一下是否使用了Layout控件,用了这个的加载确实很慢,以前遇到过,后来放弃了鸡肋的Layout。 其他控件,如button,textbox,grid,tree,好像问题不大

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧