c#程序载入过程中显示载入等待界面怎么做

我做的winform程序中,由于导入数据库会很长一段时间,就做了一个类似载入游戏时出现小漏斗的的一个panel。我用的是Stopwatchsw=newStopwatch(... 我做的winform程序中,由于导入数据库会很长一段时间,就做了一个类似载入游戏时出现小漏斗的的一个panel。我用的是 Stopwatch sw = new Stopwatch();当sw.start()时显示这个panel。可是这个panel上面的东西显示不出来,上面的控件就是灰色的,不管载入的时间长短都是这样。
请问下这个问题该怎么解决?或者想实现这个功能用什么其他的办法好一些呢
展开
 我来答
百度网友07da055
推荐于2016-04-10 · TA获得超过659个赞
知道小有建树答主
回答量:356
采纳率:33%
帮助的人:233万
展开全部
导致楼主出现的结果,是因为楼主将所有逻辑放在了主线程里,系统就一步一步来的。
楼主可以使用多线程的方法来实现所期望的结果。
步骤如下

1、实例化导入数据子线程
2、等待子线程完成
3、操作主线程

这里面可能涉及到2个问题,一个是,如何判断子线程完成了,一个是涉及到跨线程操作控件的问题。
第一个问题,可以使用一个timer控件,每隔一秒判断一次子线程状态。
第二个问题,最简单的方式是再构造器下添加“CheckForIllegalCrossThreadCalls = false;”

代码参考。请自行组合。

1)全局变量
private Thread tConnectionDB;

2)加载事件
//显示漏斗
//实例化子线程
tConnectionDB = new Thread(new ThreadStart(Connection));
tConnectionDB.Start();

3)Timer事件
if (tConnectionDB.ThreadState == ThreadState.Stopped)//判断线程是否停止
{
//显示数据

//停止Timer控件
timer1.Enable=false;
}
追问
tConnectionDB = new Thread(new ThreadStart(Connection));
这句里面的connection是什么东西啊?
还有就是你说的“CheckForIllegalCrossThreadCalls = false;”这个东西在哪里添加。
能说清楚些吗,我不是很懂
追答
Connection指的是,读取数据库数据的那个方法。
比如你有个全局变量DataTable dt,这个变量是用来存放你读取到的数据表
而这个方法,就用Connection命名吧,注意,tConnectionDB = new Thread(new ThreadStart(Connection));里,子线程的方法是没有括号的哦。

假设你的Connection方法,也就是子线程的方法,他操作了某个控件,比如修改了Panle的Visible属性,那么程序肯定要报错,因为Panle是主线程的控件,子线程是不能修改他的。正确的做法是使用委托,但是写起来可能有点麻烦,而且我也不会标准的写法,所以就姑且用“CheckForIllegalCrossThreadCalls = false;”
楼主可以先不添加这段代码,当程序报错,提示你跨线程操作控件时,请在窗体的构造器下,添加如下代码。
构造器就是
public Form1()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;//添加在这里
}
真仰泽星
2011-07-28 · TA获得超过220个赞
知道答主
回答量:196
采纳率:100%
帮助的人:199万
展开全部
不要用单线程做,因为单线程载入时不会一边载入一边给用户反馈,用双线程或时钟控件timer当作循环,每次比对一下载入文件大小和源文件大小,二者相等时关闭反馈窗口,打开程序。
追问
请问下,我怎么比对载入文件和源文件的大小呢?
追答
载入文件的话很简单,你用的再入文件类中都会自带以载入的属性。源文件的话你要从文件信息里读取了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gzlingye
2011-07-28 · TA获得超过121个赞
知道小有建树答主
回答量:276
采纳率:100%
帮助的人:226万
展开全部
用进程去载和数据 在进程中更新载入的实时状态
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a1274bf
2011-07-28 · 超过20用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:42.4万
展开全部
panel.Enable有没有设为true啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式