C# 关闭窗口后.exe文件仍在后台运行
我在VisualStudio上使用C#制作了一个简单的表单。我已将表单导出为.exe,当我通过单击窗口关闭表单时 按钮,即使窗口本身已关闭,应用程序仍在任务管理器中运行。(见下面的屏幕截图) 我的程序.csC# 关闭窗口后.exe文件仍在后台运行,c#,visual-studio,exe,C#,Visual Studio,Exe,我在VisualStudio上使用C#制作了一个简单的表单。我已将表单导出为.exe,当我通过单击窗口关闭表单时 按钮,即使窗口本身已关闭,应用程序仍在任务管理器中运行。(见下面的屏幕截图) 我的程序.cs static class Program { /// <summary> /// The main entry point for the application. /// </summary> [STAThread]
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form2());
}
}
静态类程序
{
///
///应用程序的主要入口点。
///
[状态线程]
静态void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(新Form2());
}
}
当您想关闭应用程序时,可以调用Application.Exit() 这将关闭窗口,如果它是最后一个窗口,并且应用程序的第一个窗口是用application.Run(new Form())启动的,那么它还应该结束整个应用程序。但是,似乎有一个窗口没有关闭,但隐藏了,并且/或者它可能是由Application.Run()启动的,或者有其他东西阻止它关闭整个应用程序
通常program.cs包含所有的启动方式。在表单关闭事件中终止进程
var chromeDriverProcesses=Process.getprocesss()。
其中(pr=>pr.ProcessName==“Exefilename”);//没有“.exe”
foreach(铬还原过程中的var过程)
{
process.Kill();
}
肯定不是解决方案,但如果是Process.GetCurrentProcess()
会更好answer@pinkfloydx33他的代码实际上可以工作,但是Application.Exit()
要清楚得多。@NimaJan我主要是根据LINQ不必要这一事实重新设计的,但也基于过程。杀死。虽然它们可能“起作用”,但应用程序、退出或进程、终止都不是解决问题的正确答案。一旦主窗体关闭,所有Winforms/WPF应用程序将自动终止。如果没有发生这种情况,则表示您在某处做了不正确的事情,或者(现在)有一个隐藏的主窗体,您可以从中创建要关闭的窗体的实例。您正在绕过应用程序生命周期,这就是为什么我要求您在原始问题WinForms或WPF中共享一些代码并进行澄清的原因?显示启动窗体的代码(可能在Program.cs中)是否使用某些线程或技术,以及使用线程的某些控件或库?标准Winforms项目在传递给Application.Run()
的窗体关闭时关闭…除非您创建了另一个线程并将其IsBackground
属性设置为false。或者您编写了可能隐藏表单而不是关闭表单的代码?Form2
是您要关闭的表单吗?你打开了其他表单吗?@pinkfloydx33我也从表单2中打开了表单1。还有更激进的Environment.Exit()
。@Vivian我在我的FormClosed事件中添加了Application.Exit()
,效果非常好。非常感谢。@OlivierRogier我在尝试Environment.Exit()
时遇到以下错误:错误CS7036没有给出与“Environment.Exit(int)”vervalDatum的必需形式参数“exitCode”相对应的参数。是的,此方法需要使用执行结果或退出代码(从DOS继承)。。。您可以尝试Environment.Exit(0)代码>。请参阅以了解更多详细信息。虽然这可能有效,但肯定是错误的答案。若您被迫依赖于手动调用Application.Exit以关闭事件的形式退出,则表示您在某处做错了什么。当主窗体关闭时,所有Winforms/WPF applicationz都将自动终止,这是绝对不必要的。这就是为什么我在评论中询问您是如何创建表单并显示您的程序的原因。cs/entry point