关闭后表单仍在后台运行

时间:2018-02-05 19:29:20

标签: c# forms winforms webbrowser-control

我有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

这是我的旧项目,但我回去试图重现错误/错误。我不能,我也不知道为什么。一切似乎都恰到好处。浏览器关闭的表单,我可以结束该程序。我认为问题已解决。感谢所有的回复。

0 个答案:

没有答案