2015-09-15 102 views
1

我正在运行一个简单的.NET Windows窗体应用程序。当我点击关闭按钮时,Windows窗体被关闭,但进程没有关闭。当我看到任务管理器时,我发现应用程序的流程仍然是实时的,作为后台进程。 enter image description hereWindows窗体应用程序无法正常关闭

有人可以解释为什么吗?我在关闭时是否缺少一些功能?

+0

您确定该应用程序的主窗体已关闭吗?有多种形式? – thewisegod

+1

你的应用程序是否启动任何线程?如果是这样,你是否将他们的'IsBackground'属性设置为'true'? – adv12

+0

OnFormClosing事件放入Application.Exit(); –

回答

0

你需要调用

Application.Exit(); 

在窗体的关闭事件。

0

Application.Exit
通知所有消息泵必须终止,然后在消息处理后关闭所有应用程序窗口。如果您调用了Application.Run(WinForms应用程序),则这是要使用的代码,此方法将停止所有线程上的所有正在运行的消息循环,并关闭应用程序的所有窗口。

// WinForms app 
System.Windows.Forms.Application.Exit(); 

把这段代码从关闭事件中放到你身上。

+0

你能解释downvote吗? –

+0

有人在这里下了每个答案。 – Bgl86

+1

我没有投票,但是我猜测有人会投票,因为所有的答案都在告诉提问者用锤子打他的问题,而不是找到让他的应用程序保持打开状态的东西。 – JoelC

-3
private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     try 
     { 
      this.RemoveOwnedForm(this); 
      e.Cancel = true; 
      Process[] AllProcess = Process.GetProcesses(); 
      for (int i = 0; i < AllProcess.Length; i++) 
      { 
      if (AllProcess[i].ProcessName.StartsWith("SmsAlertRemainder")) 
       { 
         AllProcess[i].Kill(); 
        } 
      } 
      Application.Exit(e); 
     } 
     catch (Exception ex) 
     { 
      Logger.WriteException(ex); 
     } 
    }