谢谢,您说的异步处理的方法是怎么个操作流程呢?
新开个线程去执行,或者建立个变量,通知timer去执行.
所谓异步,就是相对于在点下按钮时,在按钮事件中同步执行.
放弃同步执行,在按钮按下时不要直接执行耗时的代码,而是将代码放到另一个地方去执行.

解决方案 »

  1.   


    的确是这样的,我现在就是要用datagridview显示大概30000行记录,那这样行不行:就是每次点击按钮后,让他显示第一页的数据,每页30条,然后后台更新绑定的数据源,不刷新界面.
      

  2.   

    收回菜单的方法是: this.Cursor=Cursors.WaitCursor;
    this.Update();
    //处理程序
    this.Cursor=Cursors.Default;
    this.Update();对于加载数据这种程序,弄个双线程或异步没什么实际意义,除非用户的任何操作无关紧要,否则容易由于用户的新操作产生叠加效果,(即用户忍耐不住等待,不断的去点击其他操作按钮,最后不断生成新的线程或异步操作)最加完美的处理方式是加进度条,用进度条的步进去阻塞主线程,辅助线程去完成加载.辅助线程需要通知主线程完工进度,主线程只等待辅线程的进度通知,其余阻塞.