【发布时间】:2016-07-18 10:22:59
【问题描述】:
我想在 C# 中单击按钮时关闭正在运行的 exe。但是我得到了
进程已退出,因此请求的信息不可用。
我的代码:
Process nynprocess = new Process();
private void button2_Click(object sender, EventArgs e)
{
string str = @"C:\Program Files\ShareX\ShareX";
nynprocess.StartInfo.FileName = str;
nynprocess.Start();
}
private void button3_Click(object sender, EventArgs e)
{
nynprocess.CloseMainWindow();
nynprocess.Kill();
nynprocess.WaitForExit();
}
【问题讨论】:
-
所以你已经回答了你自己的问题。如果进程已经完成,按钮 3 不能杀死它
-
您只能使用一次 Process 对象。进程退出后,它不再可用。添加 nynprocess = null;到 button3_Click() 方法是一件明智的事情,可以帮助您修复 button2_Click() 并创建一个新的 Process 对象。或者帮助用户避免多次点击该按钮。
-
单击
button3时,您确定进程仍在运行吗?您可以将button3_Click中的行包装在if (!nynprocess.HasExited) { ... }中,因此它们仅适用于单击按钮时进程仍在运行的情况..