在页面初始化时或查询数据时会比较慢,有没有办法加个等待页面上去?

TLJewel 2010-11-25 02:30:45
如题。
我做的时wince开发,但是平常的winform解决办法也可以。
...全文
159 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjx198934 2010-11-26
  • 打赏
  • 举报
回复

ThreadPool.QueueUserWorkItem(delegate{异步执行的方法},要传入线程的参数);

异步执行的方法(object obj)

经过访问是数据库等操作以后,如果要更新UI界面
就使用this.invoke(delegate{操作UI控件的方法})


操作UI控件的方法()

操作UI



wt57191187 2010-11-26
  • 打赏
  • 举报
回复
1.可以做一个等待的窗口,将窗口的ControlBox属性设为False,窗体中加个等待的GIF图片
2.之后可利用BackgroundWorker控件或者Thread来做等待效果

//BackgroundWorker控件,等待效果
private void DoSearch(object sender, EventArgs e)
{
BackgroundWorker worker = GetWorker();
worker.RunWorkerAsync();
//Your Search function
worker.CancelAsync();
}
private BackgroundWorker GetWorker()
{
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(worker_RunWorkerCompleted);
worker.WorkerSupportsCancellation = true;
return worker;
}
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
MessageForm mf = new MessageForm();
mf.Show();
BackgroundWorker worker = (BackgroundWorker)sender;
while (true)
{
mf.BringToFront();
mf.Refresh();
if (worker.CancellationPending)
{
mf.Close();
e.Cancel = true;
}
else
{
e.Cancel = false;
}
System.Threading.Thread.Sleep(10);
}
}
private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Cancelled)
((BackgroundWorker)sender).Dispose();
}
whb147 2010-11-26
  • 打赏
  • 举报
回复
另开一个线程,就跟进度条一样

110,536

社区成员

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

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

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