【发布时间】:2015-12-17 17:21:47
【问题描述】:
我在终止 labview 进程时遇到问题。到目前为止,我正在使用此代码:
string NombreProceso = "FORD EPB FINAL Laser";
Process[] ps = Process.GetProcessesByName(NombreProceso);
if (ps.Count() == 0)
{
TextBox_Eventos.AppendText("[+] " + DateTime.Now.ToString("hh:mm:ss") + " | No se encontró proceso\n");
return;
}
foreach (Process p in ps)
{
p.kill();
TextBox_Eventos.AppendText("[+] " + DateTime.Now.ToString("hh:mm:ss") + " | Cerrando proceso\n");
}
问题是进程没有完成(看起来 p.kill() 不工作)。我收到异常:“没有进程与此对象关联”。我只是在寻找一个可以帮助我像任务管理器一样杀死这个进程的功能。
【问题讨论】:
-
记录它实际找到的进程数,如果它不止一个,你可能会遇到一个进程与其他进程通信并使你的集合无效的混乱(例如杀死一个进程会杀死其他进程)。还要检查 PID 以 100% 确认它没有死,也许新进程产生了替换旧进程。除此之外,我看不出代码有什么问题。
-
只是一个想法:我会尝试使用带有索引变量而不是
foreach的普通for循环。 -
可能你运行kill时进程已经不存在了?
-
附带说明,这似乎与labview没有任何关系,请考虑从问题中删除该标签。
-
@HansPassant 在这里不可能是这样,否则 GetProcessesByName 将返回一个空数组。
标签: c# system.diagnostics