不要用单线程做,因为单线程载入时不会一边载入一边给用户反馈,用双线程或时钟控件timer当作循环,每次比对一下载入文件大小和源文件大小,二者相等时关闭反馈窗口,打开程序。
导致楼主出现的结果,是因为楼主将所有逻辑放在了主线程里,系统就一步一步来的。
楼主可以使用多线程的方法来实现所期望的结果。
步骤如下
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;
}