C#中, 在从exc表中导入数据到数据库中, 怎样实现进度条 ?该如何处理
C#中, 在从exc表中导入数据到数据库中, 怎样实现进度条 ?
数据量有点大, 如果没有什么提示的话, 对用户的体验不友好。
点击导入按钮后,在后台可以获取exc表中的总行数,然后用for循环依次导入数据库中,然后我想在显示页面用一个label,在for循环中改变label的值,显示执行到第几条数据了。比如说, 当for循环到第五条的时候,我想让label显示出:当前正在导入第五条数据,总共多少多少条数据,请稍等。
可是发现根本不行呀, 点击了导入按钮后,label是在等程序执行完后再显示记录, 那已经是最后一条了。。。
有木有朋友帮帮忙。。。
------解决方案--------------------
使用线程导入
Thread thread=new Thread(new ThreadStart(DO));
thread.IsBackground=true;
thread.Start();
public void DO()
{
//导入数据的所有代码
CrossThreadCalls代码到下面网址里面查找
http://www.cnblogs.com/slyzly/articles/2121436.html
for(int i=0;i<count;i++)
{
CrossThreadCalls.SafeInvoke(this.label, new CrossThreadCalls.TaskDelegate(delegate()
{
label.text=(i+1).ToString();
}));
}
}
------解决方案--------------------
你要做的是把导入的过程放在新开的线程中执行,这样就行了
------解决方案--------------------
同意楼上,导入用线程
定义事件委托, 每插入一条,插入条数加1
主界面注册,进度条响应插入条数事件
------解决方案--------------------
web程序你要用ajax,做js脚本更新,你直接在后台更新,前台页面不刷新的话,依然还是不变
数据量有点大, 如果没有什么提示的话, 对用户的体验不友好。
点击导入按钮后,在后台可以获取exc表中的总行数,然后用for循环依次导入数据库中,然后我想在显示页面用一个label,在for循环中改变label的值,显示执行到第几条数据了。比如说, 当for循环到第五条的时候,我想让label显示出:当前正在导入第五条数据,总共多少多少条数据,请稍等。
可是发现根本不行呀, 点击了导入按钮后,label是在等程序执行完后再显示记录, 那已经是最后一条了。。。
有木有朋友帮帮忙。。。
------解决方案--------------------
使用线程导入
Thread thread=new Thread(new ThreadStart(DO));
thread.IsBackground=true;
thread.Start();
public void DO()
{
//导入数据的所有代码
CrossThreadCalls代码到下面网址里面查找
http://www.cnblogs.com/slyzly/articles/2121436.html
for(int i=0;i<count;i++)
{
CrossThreadCalls.SafeInvoke(this.label, new CrossThreadCalls.TaskDelegate(delegate()
{
label.text=(i+1).ToString();
}));
}
}
------解决方案--------------------
你要做的是把导入的过程放在新开的线程中执行,这样就行了
------解决方案--------------------
同意楼上,导入用线程
定义事件委托, 每插入一条,插入条数加1
主界面注册,进度条响应插入条数事件
------解决方案--------------------
web程序你要用ajax,做js脚本更新,你直接在后台更新,前台页面不刷新的话,依然还是不变