应用程序仍然存在于内存中,尽管它已关闭

时间:2012-02-21 10:39:33

标签: .net winforms c++-cli

我有两种表单Form1Form2,而Form1我写了以下代码:

#include "Form2"
//
//
Form2^ obj = gcnew Form2();
obj->Show();
this->Hide();
//
//

问题是当我通过X按钮关闭Form2的屏幕时,应用程序仍然存在于内存中,因为基本格式Form1仅被隐藏但未关闭。我该怎么办?

3 个答案:

答案 0 :(得分:0)

您必须在退出时关闭下层表格。

尝试覆盖OnClosing中的Form2方法并强制From1Close方式关闭..

答案 1 :(得分:0)

我根据HansPassant评论解决了这个问题。首先,需要将Form2_FormClosed声明为事件处理程序,如:

this->FormClosed += gcnew FormClosedEventHandler(this, &Form2::Form2_FormClosed);

然后使用它:

private: System::Void Form2_FormClosed(){ 
Application::Exit(); 
}

答案 2 :(得分:-1)

是的,因为你的父母或第一个表单仍然是Open,你只需要隐藏,你应该使用obj.ShowDialog()函数,它将打开第二个表单作为弹出窗口,第一个表单将无法访问...直到第二个表格被关闭......

另一种方法是使用System.Diagnotics命名空间并使用进程类,获取应用程序的所有实例,然后以编程方式结束进程... 像这样... 使用System.Diagnostics;

private Process GetaProcess(string processname)
{
Process[] aProc = Process.GetProcessesByName(processname);

if (aProc.Length > 0)
return aProc[0];

else return null;
}
 Process myprc = Call GetaProcess("Your_app_process_name.exe"); myprc.Kill();