winform 菜单展开和收起慢,卡顿。。。。

sam_jiang 2014-06-29 11:56:10
当点击一个菜单项,完成加载比较大量的数据的函数,菜单点击后,它不马上收起,好像卡顿在那里,等大量数据加载完成后它才收起,怎么能控制当我点击菜单完成后,让菜单马上收起呢。

菜单就是winform的menumain,找了半天也没有找到方法,refresh也不行。请高手不吝指教。


谢谢了。
...全文
378 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChainFans 2014-06-30
  • 打赏
  • 举报
回复
我之前也做过类似的,建议去建一个线程去处理
於黾 2014-06-30
  • 打赏
  • 举报
回复
引用 8 楼 chz415767975 的回复:
较大量的数据的函数 我觉得问题是要优化你那个函数。可以参照目录树的形式,不要一下子把所有数据都展示出来,当用户操作某一层的时候在展示客户需要的数据。
他的那个函数明显去访问IO了.不管是从文件里获取还是读数据库,动态加载数据保证是比数据写死了要慢啊.
霜寒月冷 2014-06-30
  • 打赏
  • 举报
回复
较大量的数据的函数 我觉得问题是要优化你那个函数。可以参照目录树的形式,不要一下子把所有数据都展示出来,当用户操作某一层的时候在展示客户需要的数据。
PaulyJiang 2014-06-30
  • 打赏
  • 举报
回复
好多种方法 , 可以 点击的时候 开个线程 去处理 你的方法
jointan 2014-06-30
  • 打赏
  • 举报
回复
收回菜单的方法是: this.Cursor=Cursors.WaitCursor; this.Update(); //处理程序 this.Cursor=Cursors.Default; this.Update(); 对于加载数据这种程序,弄个双线程或异步没什么实际意义,除非用户的任何操作无关紧要,否则容易由于用户的新操作产生叠加效果,(即用户忍耐不住等待,不断的去点击其他操作按钮,最后不断生成新的线程或异步操作) 最加完美的处理方式是加进度条,用进度条的步进去阻塞主线程,辅助线程去完成加载.辅助线程需要通知主线程完工进度,主线程只等待辅线程的进度通知,其余阻塞.
於黾 2014-06-30
  • 打赏
  • 举报
回复
引用 5 楼 sam_jiang 的回复:
[quote=引用 3 楼 luoye4321 的回复:] 楼主没明白1楼的意思,菜单之所以卡着不动,就是因为它在收起之前必须完成读取任务。使用异步的话(建个线程)就可以把读取任务在其他线程里执行,菜单自己就能轻轻松松的走自己的路了。
谢谢,您说的异步处理的方法是怎么个操作流程呢?[/quote] 新开个线程去执行,或者建立个变量,通知timer去执行. 所谓异步,就是相对于在点下按钮时,在按钮事件中同步执行. 放弃同步执行,在按钮按下时不要直接执行耗时的代码,而是将代码放到另一个地方去执行.
sam_jiang 2014-06-30
  • 打赏
  • 举报
回复
引用 3 楼 luoye4321 的回复:
楼主没明白1楼的意思,菜单之所以卡着不动,就是因为它在收起之前必须完成读取任务。使用异步的话(建个线程)就可以把读取任务在其他线程里执行,菜单自己就能轻轻松松的走自己的路了。
谢谢,您说的异步处理的方法是怎么个操作流程呢?
落叶1210 2014-06-30
  • 打赏
  • 举报
回复
另外,先收回肯定是不能了,除非放到其他事件里执行数据加载或者分解任务
落叶1210 2014-06-30
  • 打赏
  • 举报
回复
楼主没明白1楼的意思,菜单之所以卡着不动,就是因为它在收起之前必须完成读取任务。使用异步的话(建个线程)就可以把读取任务在其他线程里执行,菜单自己就能轻轻松松的走自己的路了。
sam_jiang 2014-06-30
  • 打赏
  • 举报
回复
引用 8 楼 chz415767975 的回复:
较大量的数据的函数 我觉得问题是要优化你那个函数。可以参照目录树的形式,不要一下子把所有数据都展示出来,当用户操作某一层的时候在展示客户需要的数据。
的确是这样的,我现在就是要用datagridview显示大概30000行记录,那这样行不行: 就是每次点击按钮后,让他显示第一页的数据,每页30条,然后后台更新绑定的数据源,不刷新界面.
sam_jiang 2014-06-30
  • 打赏
  • 举报
回复
引用 1 楼 liucqa 的回复:
异步读取数据吧
不能让它先收回去吗,有没有这样的操作函数呢。加载慢点没事儿。

110,532

社区成员

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

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

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