如题。
 我做的时wince开发,但是平常的winform解决办法也可以。

解决方案 »

  1.   

    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();
    }
      

  2.   


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

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

       操作UI