Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用赢得的按钮关闭';t结束任务C#_C# - Fatal编程技术网

使用赢得的按钮关闭';t结束任务C#

使用赢得的按钮关闭';t结束任务C#,c#,C#,因此,出于某种原因,当我编写this.Close()时进入我的程序,它实际上不会关闭它。 我让程序打开另一个.exe文件,然后关闭,但我打开了我的任务管理器,它实际上仍然在后台运行。我的上下文菜单上的“关闭”选项也有这个问题。 你知道为什么吗 编辑:即使我用按钮退出,它仍然在后台 编辑: private void closeToolStripMenuItem_Click(object sender, EventArgs e) { this.Close(); } private void

因此,出于某种原因,当我编写
this.Close()时进入我的程序,它实际上不会关闭它。
我让程序打开另一个.exe文件,然后关闭,但我打开了我的任务管理器,它实际上仍然在后台运行。我的上下文菜单上的“关闭”选项也有这个问题。
你知道为什么吗

编辑:即使我用按钮退出,它仍然在后台

编辑:

private void closeToolStripMenuItem_Click(object sender, EventArgs e)
{
    this.Close();
}

private void launch_Click(object sender, EventArgs e)
{
    System.Diagnostics.Process.Start(Environment.ExpandEnvironmentVariables("%AppData%\\program.exe"));
    this.Close();
}
只有两个正在关闭程序的实际代码。但它仍在后台运行。
即使我通过实际的x按钮退出,它仍然在后台运行。

您必须关闭已创建的进程。创建变量以保存已创建的流程,并在关闭表单或按其他按钮时关闭流程。见:


如上述注释中的尺寸,使用系统诊断添加;下载您的代码并尝试此代码

public Form1()
{
    InitializeComponent();
    Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
}

void Application_ApplicationExit(object sender, EventArgs e)
{
    Process.GetCurrentProcess().Kill();
}

你能给我们看一下你的代码吗?你是说你有一个运行另一个可执行文件的应用程序吗?试试
application.Exit()@sickUnit我试过了,成功了。除了使用内置的退出按钮…嗯…哦,所以我只是简单地关闭表单。我需要结束整个过程吗?好了,现在有道理了!非常感谢。对您正在关闭表单而没有关闭流程:)但仍然有问题。它正在处理红线。你能解释一下这个代码是如何工作的吗?这样我就可以把它正确地放到我的程序中去了到您的“使用”-块或使用
System.Diagnostics.Process.Start(“notepad.exe”)确实,需要对System.Diagnostics的引用。我将把它包括在代码样本中,直到退出按钮没有完全关闭为止。可能是因为我有一个闪屏吗?由于
this.Hide(),启动屏幕正在后台运行public Form1()
{
    InitializeComponent();
    Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
}

void Application_ApplicationExit(object sender, EventArgs e)
{
    Process.GetCurrentProcess().Kill();
}