好吧,别人都是在线程里处理业务,然后通过this.Invoke在ui线程里更新画面,而你在代理线程上绕了半天,结果一句this.Invoke又绕回ui线程,又回到了单线程

解决方案 »

  1.   

    不要老是去控制panel添加删除控件,那样你在哪里执行都会很慢的你可以先定义好要显示的东西
    然后去控制哪些显示,哪些不显示,就行了
      

  2.   

    你这种写法:this.Invoke(new VoidDelegate(delegate() { panel_printstate.Controls.Clear(); }));
    能不能换成 if (panel_printstate.InvokeRequired) { 
                panel_printstate.Controls.Clear();   
                }
      

  3.   

    你代码要修改的地方多了.
    在程序启动之前就定义好控件,不要动态加载.动态加载也只加载一次,不要动不动就clear然后又add,那样即使不卡也会很闪
    然后线程只需要控制哪些显示,哪些不显示,显示的位置,字体什么的.
      

  4.   

    数据量大的话加载肯定慢,可以考虑做个缓存。
    试试加上application.doevent()可以让用户体验好一点