当前窗体:MainForm
其中创建了两个线程:Thread1(执行工作线程)、Thread2(监控线程)。当Thread2发现Thread1执行完成并Abort后,Thread2执行关闭MainForm。我在Thread2中用如下代码关闭MainForm,但不起作用,请高手指点。
private delegate void CloseFormCallBack();
private void CloseForm()
        {
            if (this.InvokeRequired)
            {
                CloseFormCallBack CfB = new CloseFormCallBack(CloseForm);
                this.Invoke(CfB);
            }
            else
            {
                this.Close();
                this.Dispose();
            }
        }

解决方案 »

  1.   

    当Thread2发现Thread1执行完成并Abort后,Thread2执行关闭MainForm
    -------------------------------------
    应该让MainForm去监视Thread1,当Thread1完成后,MainForm先关掉Thread2线程,再关闭自己
      

  2.   

    晕了,试过N多次了,监控线程Thread2就是关不了这个窗体啊,跪求高手指点啊
      

  3.   

    boblaw:可是,监控线程Thread2中的那个循环测试的循环体如果不放在线程里怎么放啊,请指点
      

  4.   

    你的Thread2是做什么,只是循环去检测Thread1是否完成?如果是这样的话,Thread2完全不必要使用,直接在MainForm使用Timer1检测好了.
      

  5.   

    boblaw:Thread2只是用作检测的,谢谢,先试试你的方法
      

  6.   

    但我还是希望能从Thread2中完成关闭MainForm,先试试Timer如何
      

  7.   

    参考下面的代码,测试OK        delegate void closefrmCallBack();
            private void button1_Click(object sender, EventArgs e)
            {
                Thread t = new Thread(new ParameterizedThreadStart(dothing));
                t.Start();
            }
            void closefrm()
            {
                this.Close();
            }        void dothing(object s)
            {
                if (this.InvokeRequired)
                {
                    closefrmCallBack cb = new closefrmCallBack(closefrm);
                    this.Invoke(cb);
                }
                else
                {
                    this.closefrm();
                }
            }