进行一个运算,希望在运算前弹出一个窗口提示正在运算,然后算完了,这个弹窗消失掉
//主窗口类
SolutionRobot MyRobot = new SolutionRobot(textBoxOfInputPath.Text, textBoxOfOutputPath.Text,day);
WatingForm wait = new WatingForm();
MyRobot.Run();
wait.CloseDialog();
...
//弹出窗口类
 partial class WatingForm : Form
    {
        public WatingForm()
        {
            InitializeComponent();
            this.ShowDialog();
            //OperateProgressBar();
        }
        public void CloseDialog()
        {
            this.Close();
        }
这样写为什么不行??

解决方案 »

  1.   

    单独列一个线程来运行 progressbar
    计算完成后终止线程即可
      

  2.   

    模态窗口http://download.csdn.net/source/1912431例子
      

  3.   

    把wait.CloseDialog();写到run()方法里,哈哈按你这种情况,应该是run()方法里执行了异步操作
      

  4.   


    using System.Threading;
    Thread t = new Thread(new ThreadStart(ShowProgressBar));
    t.Start();
    try
    {  
      //这里是你的计算过程
    }
     finally
     {
        bAbort = true;
        t.Join();
     }
    static  bool bAbort = false;
    private static void ShowProgressBar()
     {
        ProgressForm prgForm = new ProgressForm();
        aForm.Show();
        while (!bAbort || prgForm .progressBar1.Value < 99)
         {
            if (prgForm .progressBar1.Value + 3 > 100)
              {
                 prgForm .progressBar1.Value = 1;
              }
             else
              {
                 prgForm .progressBar1.Value += 3;
              }
                Thread.Sleep(5);
        }
     }
      

  5.   

    纠正下:
    aForm.Show();改为
    prgForm.Show();