c# winform窗体程序 登录后,主界面加载时间长

yigeyanse 2014-09-28 05:18:27
我想的是,登录时,登录界面放一个label显示正在登录,此时后台加载 主界面,加载完毕后,立刻显示主界面,关闭登录界面。
不知道如何实现?
...全文
546 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
於黾 2014-09-30
  • 打赏
  • 举报
回复
针对方案1的优化方案,一般是数据量多的时候,能一次读数据库就加载出来的数据,就不要循环许多次去分别读,读出来之后再在内存中分解
於黾 2014-09-30
  • 打赏
  • 举报
回复
类似这种问题,一般只有3种处理方法 1.想办法让窗体加载的快点 2.窗体主线程加载数据,子线程显示个等待窗口 3.子线程加载数据,主线程加载控件,不阻塞
sunny906 2014-09-29
  • 打赏
  • 举报
回复
把主界面加载时间长的代码段放到线程里,让线程去异步加载
SiseKair 2014-09-29
  • 打赏
  • 举报
回复
用多线程做啊
万玩完顽完 2014-09-29
  • 打赏
  • 举报
回复
引用 3 楼 qq_20641459 的回复:
what?
xian_wwq 2014-09-29
  • 打赏
  • 举报
回复
先显示一个初始加载Loadingform,在这个Loadingform中启用线程, 完成需要的功能加载。这个过程中,在Loadingform显示加载进度等信息 等功能界面加载完成后, 将Loadingform隐藏起来就可以了。

public partial class LoadingForm : Form
{
       private MainForm form;
        private Thread loadThread; //加载线程
       
        private void LoadingForm_Load(object sender, EventArgs e)
       {
            loadThread = new Thread(new ThreadStart(LoadDataFunc));
            loadThread.IsBackground = true;
            loadThread.Start();
           ...
       }

         void LoadDataFunc()
         {
             ...
             //初始化完成后
             
              //使用委托
              this.Invoke(new Action(() => { 
              form.Show();
             this.Visible = false;
             }));
        }
    }
於黾 2014-09-28
  • 打赏
  • 举报
回复
然后,在主窗体加载完毕,Shown事件里,让等待窗口关闭 这里可以用全局变量传值,等待窗体中放个timer检测这个值
於黾 2014-09-28
  • 打赏
  • 举报
回复
1.加载时间长,首先你应该想如何缩短这个时间,实在缩短不了再想别的办法 2.放个label,你在逗我吗? 主界面都已经卡死了,label会变化吗? 你应该弹出一个全屏的等待窗口,这个窗口要用多线程来做,然后显示个进度条或者一段动画什么的.

110,545

社区成员

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

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

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