我有2个表格。第一个(主窗体)打开第二个窗体。第二种形式有一个WebBrowser,它导航到某个站点。
首先我关闭第二个表单,然后是第一个表单。如果我在特定时间关闭第二个表单,内存使用率将保持高位,关闭第一个表单后,程序(第一个表单)仍将在后台运行,我必须用VS中的红色方块关闭它。 / p>
我已尝试添加Process.GetCurrentProcess().CloseMainWindow()
之类的内容(找到here)
没用。
第一个(主要)表格
public partial class Form1 : Form
{
Form2 LoginForm;
public Form1()
{
InitializeComponent();
}
private void OpenSecondFormButton_Click(object sender, EventArgs e)
{
// Passing reference
// In future I will need to acces this form from the second one
LoginForm = new Form2(this);
LoginForm.Show();
}
}
第二个(WebBrowser)表格
public partial class Form2 : Form
{
public Form1 MainFormRef;
public Form2(Form1 formRef)
{
InitializeComponent();
MainFormRef = formRef;
}
private void Form2_Load(object sender, EventArgs e)
{
WebBrowser.Navigate("www.google.com");
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
WebBrowser.Stop();
WebBrowser.Dispose();
}
}
我认为这是由WebBrowser加载或处理一些东西引起的,我不会阻止它/处理它的资源。 Form2_FormClosing
也是我尝试过的。没用。
我想知道这种情况发生的原因和一些可靠的解决方案。我不想做“AllProcesses.Kill()
”之类的事情。
编辑#1
主要方法
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
// Here I tried to add the suggested solution
// Application.ExitThread();
// Environment.Exit(0);
}
}
我在想是否因为我的电脑或VS而出现问题。我应该上传我的项目,以便其他人可以尝试重现错误吗?
编辑#2
这是我的旧项目,但我回去试图重现错误/错误。我不能,我也不知道为什么。一切似乎都恰到好处。浏览器关闭的表单,我可以结束该程序。我认为问题已解决。感谢所有的回复。