在下做了一个软件(Winform),主窗口是“Form1.cs”,但是程序的启动窗口是“Login.cs”,从“Login.cs”是可以跳转到“Form1.cs”的。现在的问题是:
关闭主窗口Form1.cs后(也就是关闭软件了),但是在任务管理器中还存在这个进程,貌似没有释放资源似地。

1、请问这是什么原因造成的?2、是不是要调用“Form1.cs”的“FormClosing”或是“FormClosed”事件来释放资源,如果是应该怎样编写代码才可以在关闭窗口时关闭线程。

注:其实启动窗口“Login.cs”还开着,把启动窗口给隐藏了再显示主窗口。
代码://界面跳转
Form1 frm1 = new Form1();
frm1.Show();
this.Hide();但是在“Form1.cs”中的“FormClosing”事件里加了如下代码,想关闭"Login.cs"窗口,但是不行啊。
代码:
            Login login = new Login();
            login.Close();问题3、是不是“Login.cs”窗体关闭了,整个软件就关闭了,如果是应该怎样关闭?
问题4、有一个网友是这么说的:
       this.Dispose(true);
       this.Close();
       Application.Exit(); 
请问这是什么意思?放在“Form1.cs”中的“FormClosing”事件里就行了吗?

解决方案 »

  1.   

    Form1 frm1 = new Form1();
    frm1.Show();
    this.Hide();
    你这个只是隐藏了启动窗体而以,所以要在其它窗体这个事件中加入退出程序代码
    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
            {
                System.Environment.Exit(0);
            }
      

  2.   

    这两个是不同的对象,除非你把Form1的对象传入到Login里面,然后再Login里面写Close,不过建议用1L的方法,或者Application.Exit();
      

  3.   

    进程的关闭:public static void KillProcess(string process) 
            {
                System.Diagnostics.Process[] processList = System.Diagnostics.Process.GetProcesses();
                foreach (System.Diagnostics.Process p in processList)
                {
                    if (p.ProcessName == process)
                    {
                        p.Kill();
                    }
                }
            }软件的关闭:            System.Environment.Exit(0);