界面采用的是DockPanel布局方式
主界面frmMain(MDI窗口),子界面frmTree在主界面加载的时候会先加载frmTree的数据(数据动态的,从数据库中查询),由于frmTree加载数据时会耗时,所以主界面在看起来会有点“假死”的效果。。在主界面加载时 会有个引导的界面 来显示加载的信息。
例如:正在加载工程信息
      正在加载**信息我现在就想使用多线程如何解决界面假死的现象?

解决方案 »

  1.   

    new Thread((ThradStart)delegate
    {
        //读取数据库
        this.Invoke((EventHandler)delegate
                   {
                       //操作你的界面,比如设置DataGridView的DataSource
                   });
    }).Start();以上放在你需要的地方,比如按钮按下,OnLoad或是Load事件。
      

  2.   

     if (MyMainRun != null) MyMainRun(20, 1, "初始化系统,请稍等……");
     if (MyMainRun != null) MyMainRun(20, 3, "正在加载信息栏……");
        tsmInfoColumn_Click(sender, e);             //初始化显示信息栏窗体
     if (MyMainRun != null) MyMainRun(20, 6, "正在加载导航条……");
        tsmNavigation_Click(sender, e);             //初始化显示导航条窗体   这是在主界面中LOAD事件中加载的代码,tsmNavigation_Clcik(sender,e);这段代码主要就是加载子窗体frmTree并且加载数据的MyMainRun 是委托。所以 我不知道该怎么使用多线程,还有在使用过程中需要注意哪些问题?再次感谢。
      

  3.   


    网上多线程的例子太多了。自己研究一下吧!http://www.cnblogs.com/xugang/archive/2008/04/06/1138856.html
      

  4.   

    LS的朋友 真的这么简单吗?我这不在一个窗体内 主界面窗体加载显示子窗体frmTree 而子窗体frmTree则加载数据(耗时),请问这个该这么处理?希望各位能给点详细的思路。。3Q!
      

  5.   

    读取数据专门放在一个线程里,读取完成后置全局变量bCompleted=true;
    在主线程里用timer循环检测bCompleted,若为true,则启动主界面。