类似进度条防止程序假死

dongjianhua520520 2010-12-14 12:20:49
DataGridView绑定数据,因为数据量大,造成程序假死。
做了一个显示等待的界面(包含了一个等待的图片和 ‘正在查询,请等待’字样)
如何让界面初始化的时候 显示此 显示等待的界面、等数据绑定完成后关闭此界面?
...全文
196 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-12-14
  • 打赏
  • 举报
回复
多线程操作
用backgroundworker通过异步来实现
ProgressForm progressForm = new ProgressForm();
progressForm.Show(); //弹出progressForm

worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(progressForm.OnProcessCompleted);
worker.RunWorkerAsync();
zhao_zps 2010-12-14
  • 打赏
  • 举报
回复
后台操作吧backgroundWorker
whrspsoft3723 2010-12-14
  • 打赏
  • 举报
回复
做个前端窗体,show出来(别用showDialog)就行了。 用一动画或进度条(自己刷新)界面也需要刷,sql提交给数据库后,准确的进度是没有了,模拟一个动态的效果。

开始时show,完成后关闭就行了。

如果时间不算太长,改下鼠标光标就行了。
Cursor old = this.cursor;
this.Cursor = Cursores.Wait;
....
this.cursor = old

完成后恢复
黑暗骑士 2010-12-14
  • 打赏
  • 举报
回复
我只知道Ajax里头有个可以用来显那个。
全栈深入 2010-12-14
  • 打赏
  • 举报
回复
用主线程来显示界面,用另外一条线程来加载数据。数据加载完成后调用DataGridView的回调函数Invoke来绑定DataGridView的数据源
dongjianhua520520 2010-12-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyq11 的回复:]
多线程操作
用backgroundworker通过异步来实现
ProgressForm progressForm = new ProgressForm();
progressForm.Show(); //弹出progressForm

worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
work……
[/Quote]

用这个搞了半天都把我搞死了。
因为不知道咋弄。最后是用最笨的方法

frmAjax frm = new frmAjax();
frm.Show ();
Application.DoEvents();
BindData();//绑定
frm.Close();

但是问题是 那个gif图片只显示第一帧的。郁闷。算了 这个问题不搞了。

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧