C#杀死了一个labview应用程序
本文关键字:一个 labview 应用程序 | 更新日期: 2023-09-27 18:27:22
我在杀死一个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()没有工作)。我得到一个异常:"没有进程与此对象关联"。我只是在寻找一个功能,帮助我杀死这个过程,就像任务经理所做的。
就文档而言,无法确定对象是否与流程关联。做你想做的事情的唯一方法是将呼叫包装在一个try-catch块中:
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)
{
try
{
p.kill();
}
catch (InvalidOperationException) {}
TextBox_Eventos.AppendText("[+] " + DateTime.Now.ToString("hh:mm:ss") + " | Cerrando proceso'n");
}
您还可以尝试查看对象有多少个句柄,因为Process.CKill()首先需要获取对象的句柄,所以该对象需要至少有一个Process.Ckill()的句柄,以便在无法获取句柄时不引发异常,正如您在ReferenceSource中看到的那样。
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)
{
try
{
if (p.Handles > 0)
p.Kill();
}
catch (InvalidOperationException) {}
TextBox_Eventos.AppendText("[+] " + DateTime.Now.ToString("hh:mm:ss") + " | Cerrando proceso'n");
}