C# 等待页面

来源:百度知道 编辑:UC知道 时间:2024/06/25 23:34:31
用c#做了一个程序,在Form_Load()函数里面加载数据。打开很慢,首先窗体可以看到,但是在大概有30秒左右的时间不能对窗体操作,出现假死状态,现在就是想在这30秒的时间内弹出一个等待对话框,当能对窗体操作时再自动的关闭这个对话框,这个应该在其他程序中都可以看到,就是加载数据时提示用户在加载数据。这个大概该怎么做?
我逐步运行了一下,是在Form_Loaded()之后,主窗口显示之后还要等到30秒左右,那个时候Form_Load()已经全部运行完毕了,可能是加载了一个控件,那个控件加载或者是初始化没有完成。运行等待窗口已经实现,现在的问题是不知道主窗口什么时候可以响应消息?想将运行的等待窗口在主窗口能够完全响应消息的时候关闭。 heisetoufa的回答好像不行, Foxcoming的回答正在看,请热心人多多帮忙,谢谢啦。

用BackgroudWorker
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/cpref3/html/T_System_ComponentModel_BackgroundWorker.htm

public int i = 0;
Form_Load()
{
i = 1;
Form2 frm2 = new Form2();//这两句放在Form_Load()的最上边
frm2.show();

//其他执行代码
最后一行设置
i = 0;
在Form2里判断i 是不是等于0,是的话执行关闭Form2窗口的命令
或者直接用这个Form关闭子窗口Form2
}

你可以再建立以个等待窗体来执行具体的东西等执行完毕在现实执行结果不要先显示等待然后在隐藏效果不好

BackgroundWorker 类允许您在单独的专用线程上运行操作。耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 似乎处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用 BackgroundWorker 类方便地解决问题。

用线程~~