簡體   English   中英

Windows表單應用程序未關閉

[英]Windows form application not closing

我在c#中創建一個Windows表單應用程序,並且在關閉主表單后,該進程永遠不會被終止。 這個過程處於后台,占用了記憶。 我嘗試了很多方法,比如Application.exit和Environment.exit,但沒有一個方法有效。

我努力了:

private void Form1_FormClosing(Object sender, FormClosingEventArgs e)
    {
        Environment.Exit(0);
    }

static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
        Environment.Exit(0);
    }
}

我已經使用Application.Exit和Environment.Exit嘗試了這兩種方法

我只想要一個在關閉主表單時殺死進程的解決方案

編輯:

仔細檢查后,只有當按下按鈕切換到我的項目的第二個表單時才會出現此錯誤:

Form2 f = new Form2();
        f.Show();
        this.Hide();

我用過:

Environment.Exit(0);
Application.Exit();

它在我的一個項目上為我工作。

如果還沒有,您需要使用[STAThread]屬性標記主方法(請參閱https://stackoverflow.com/a/1361048/1497128 ),如下所示 -

        [STAThread]
        private static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }

如果是,那么請確保......

  • ...所有前台線程在表單關閉之前被終止
  • ...如果您訂閱了FormClosing事件,那么請確保您沒有設置Cancel = true

您的解決方案都不是必需的,WinForm應用程序在主窗體關閉時終止進程(假設沒有其他阻塞,例如另一個前台線程)。 您可以通過在Visual Studio中創建一個新的WinForm項目,運行它並關閉表單來測試它。

除非您使用特定的邏輯來控制應用程序何時退出,否則您絕對不需要Environment.Exit(0) (主要用於控制台應用程序)或Application.Exit() (與WinForm應用程序一起使用)。 關閉表單應該這樣做,這可以通過調用form.Close()以編程方式完成。

使用按鈕時單擊以打開新表單使用USING

 using (Form1 frm = new Form())
        {

            frm.ShowDialog();

        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM