MDI窗体中存在多个子窗体,每个子窗体中有可能执行了
while(true)类型的循环,当然是在子线程中执行的。
现在的问题是,我关闭主窗体后,进程里面仍然有这个程序的进程。
我想可能是子窗体中的子线程没有回收,还在执行循环的原因,请问怎样在关闭这个程序的时候释放所有自窗体建立的线程?

解决方案 »

  1.   

    问题是我点了主窗体的X,窗体都没了,但是看windows任务管理器里面进程还是在执行。
      

  2.   

    to 问题是我点了主窗体的X,窗体都没了,但是看windows任务管理器里面进程还是在执行方法一:在主窗体中的关闭事件中,调用
    Application.ExitThread();
    来关闭方法二:
    把子线程对象用成员的方式进行保存,然后逐个关闭。
      

  3.   

    /// <summary>
    /// 窗体关闭期间释放所有资源
    /// </summary>
    private void frmMain_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
    //遍历子窗体,并关闭
    foreach(Form form in this.MdiChildren)
    {
    form.Close();
    }
    }
    我增加了这个,还是没用
      

  4.   

    关闭子线程应该怎么做?
    我刚才的代码后面加Application.ExitThread();
    会抛出线程正在终止异常。