1

我必须在我的 OnClosing 处理程序中做一些清理工作,这使得我的应用程序看起来像是挂起。

如何显示带有选取框式进度条的小对话框,以便用户至少知道它仍在“工作”?

基本上我想启动对话框,继续我的所有关闭程序,完成后,关闭进度对话框。

4

2 回答 2

2

有很多方法可以实现这一点,但其中一种可能如下所示:

protected override void OnClosing(CancelEventArgs e)
{
    base.OnClosing(e);

    Form dlg=null;
    ThreadPool.QueueUserWorkItem(state => {
        dlg = new ShuttingDownUI();
        dlg.ShowDialog();
    });

    // do hard work with saving and stuff

    if (dlg != null)
    {
        dlg.BeginInvoke((Action) dlg.Close);
    }
}

ProgressBar在表单的 OnClosing 方法中,在包含 a且其Style属性设置为的单独线程上打开一个“关闭对话框” Marquee。然后继续执行保存/关闭程序,完成后关闭“关闭”对话框。

重要的是带有选取框的表单必须位于与正在完成工作的线程不同的线程上。否则它不会动画,并且应用程序仍然会出现,好像它没有响应一样。

于 2009-12-10T21:56:52.487 回答
0

您是否尝试过类似的方法:

  private void Form1_FormClosing( object sender, FormClosingEventArgs e )
  {
     using ( Form2 myForm2 = new Form2() )
     {
        myForm2.Show();

        //Do your stuff here

        myForm2.Close();
     }
  }
于 2009-12-10T21:54:34.130 回答