C# 我的winform应用程序仍在后台运行,即使我关闭了该应用程序

C# 我的winform应用程序仍在后台运行,即使我关闭了该应用程序,c#,winforms,visual-studio-2012,visual-studio-2013,C#,Winforms,Visual Studio 2012,Visual Studio 2013,正如标题所说,我的WinForm应用程序在关闭后仍将在后台运行。我已经在编码中添加了以下内容: private void Form1_FormClosing(object sender, FormClosingEventArgs e) { Application.Exit(); } 但当我按Alt+F4关闭应用程序时,我检查任务管理器中的进程,它仍然在运行 如果我使用Alt+F4关闭应用程序,是否FormClosing()不会运行 我假设您有一些线程仍在运行,并且阻止程序关闭 我使用该

正如标题所说,我的WinForm应用程序在关闭后仍将在后台运行。我已经在编码中添加了以下内容:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    Application.Exit();
}
但当我按Alt+F4关闭应用程序时,我检查任务管理器中的进程,它仍然在运行


如果我使用Alt+F4关闭应用程序,是否
FormClosing()
不会运行

我假设您有一些线程仍在运行,并且阻止程序关闭

我使用该函数检查线程是否仍处于活动状态:

  int maxLoops = 100;
  bool oneIsBusy = true;
  while (maxLoops-- > 0 && oneIsBusy)
  {
         oneIsBusy = false;
         Thread.Sleep(100);
         Application.DoEvents();
         foreach (Thread thread in ThreadList)
         {
              oneIsBusy |= thread.IsRunning;
         }
    }
您应该在每个线程上保留日志,然后等待它们关闭。
Application.Exit()
不应在
FormClosing
中调用,因为它将被调用。

因此,我将您的函数放在FormClosing中?我尝试将您的函数放在FormClosing中,但ThreadList出现错误。错误消息:当前上下文中不存在名称ThreadList。所以我认为我的应用程序没有运行线程。这个线程列表应该由你管理。您可以使用:ProcessThreadCollection currentThreads=Process.GetCurrentProcess().Threads;foreach(currentThreads中的ProcessThread线程){if(thread!=Threads.CurrentThread){oneIsBusy |=thread.IsRunning;}}您使用的是计时器还是backgroundworker?当我设置的计时器仍在重复触发时,我产生了这种效果,因为我没有在窗体关闭时停用它。