界面冻结,怎么用多线程加进度条改善? 界面上点“下一步”,执行操作到数据库要1分钟,这个阶段界面冻结很难看,怎么用多线程加个进度条改善?有个难点,异步执行操作到数据库,过程要在进度条显示进度,percent怎么计算?另外,我要获得异步“执行操作到数据库”的结果,成功还是失败,弹出相应提示信息。请高手指点 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用BackGroundWorker , 不要在UI thread上,否则UI就停住了。 Percent 也有。仔细看MSDN 还有一个办法,你可以在处理数据的时候另外开启一个线程 ,让他自己去处理,处理完成后返回到主线程,这个过程中你可以安排窗口做别的事青,不过要注意一个问题,就是同步,不要让另外那个线程和主线程使用同一个 static connection,否则会发生异常,最好使用连接池。 增加一个线程,用异步委托调用如果是多个sql语句,可以显示进度,如果是一个sql语句要执行很久,进度不好显示 增加一个线程,去取数据执行完了再显示Invoke到界面上. 连接池,你可以参照一下ADO。net2.0中的连接池的例子 先是进度条的问题可以解决,新开一个线程执行Sql,进度条使用你预估计的时间设置,就像Windows的安装 不用知道Sql执行需要的真实时间,只是给用户一个好看的界面而已吧 可专门做个进度条的界面,用个线程来执行弹出这个界面。不过最好是不用进度条,就用个gif“请等待...”图片 tjvictor(终于升星了,向两星奋斗) ( ) 信誉:100 Blog 2007-03-28 10:47:00 得分: 0 没有办法使用时间精确。微软的很多产品在安装时,本来还有10分钟才完成,可是一下子就剩下几十秒了,所以呀,这种时间只可以大致估算一下。 ----------------------------------------------------up 有代码么?现在buttonNext_Click(){ bool result = MyCommitToDBFunction(string input); //这个方法很慢 if(result) MessageBox.Show("Succeeded."); else MessageBox.Show("Failed!");}怎么用BackGroundWorker或者Delegate来实现? 用专门的进度条也不能很精确,还是用gif之类的图片吧。等完成再去捍图片就可以了 典型的异步多线程,可以使用observer做回调。percetage,可以开始之后等待回调 看一下委托实现多线程,即Invoke()和BeginInvoke这2个方法 一组由0和1组成的数字,如何判断第二位是不是1 c#怎么控制word表格里的行高缩短。 XML里的特殊字符处理 请教 关于 C#移动设备开发方面的书籍 该怎么向toolBarButton插入图片 如何实现类似输入SN号码的TextBox? PluginInstaller.msi 怎么用啊? 急求回复! 微信公众平台获取JSON的解析 如何得到一个文件的类型? c#作的WINFORM程序是不是要在客户环境装.netframework C#.net 在Win中如何把DataGrid里面邦定其它控件
Percent 也有。仔细看MSDN
如果是多个sql语句,可以显示进度,如果是一个sql语句要执行很久,进度不好显示
执行完了再显示Invoke到界面上.
不过最好是不用进度条,就用个gif“请等待...”图片
没有办法使用时间精确。微软的很多产品在安装时,本来还有10分钟才完成,可是一下子就剩下几十秒了,所以呀,这种时间只可以大致估算一下。
----------------------------------------------------
up
buttonNext_Click()
{
bool result = MyCommitToDBFunction(string input); //这个方法很慢
if(result) MessageBox.Show("Succeeded.");
else MessageBox.Show("Failed!");
}怎么用BackGroundWorker或者Delegate来实现?
可以使用observer做回调。
percetage,可以开始之后等待回调