我知道这个问题很好,甚至更好的回复,但我尝试了我在网上找到的所有内容,我的winform应用程序仍在使用RAM的任务管理器的进程列表中。
我正在使用Quartz.NET,这就是我关闭我的应用的方式:
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
scheduler.Shutdown();
scheduler2.Shutdown();
Application.Exit();
}
我使用两个调度程序。我尝试杀死我的应用程序中的进程,我使用FormClosing
但它仍然在那里。
编辑:原来没有调用Form1_FormClosed
的事件,我必须通过表单属性添加它。
答案 0 :(得分:5)
最可能的原因是:另一个线程(UI线程除外)仍在运行,并阻止进程终止。您可以使用
强制应用程序在FormClosed
事件处终止该过程
Environment.Exit(0);
因为Application.Exit();
“尝试”正常退出应用程序,但Environment
类中的那个强制它立即终止。
答案 1 :(得分:0)
必须有一个仍在运行的线程。您可以使用Thread.IsBackground Property将所有线程设置为后台线程。当主线程结束时,您将确保所有线程都已结束
在这种情况下调用Environment.Exit(0);
是一种不好的做法。我会尝试调查哪个线程没有结束以及关闭后发生了什么