gpt4 book ai didi

C# 杀死一个 labview 应用程序

转载 作者:太空宇宙 更新时间:2023-11-03 12:54:39 26 4
gpt4 key购买 nike

我在终止 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 block 中:

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.Kill() 首先需要获取对象的句柄,对象至少需要有一个句柄才能让 Process.Kill() 不抛出无法获取句柄时的异常,如您在 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");
}

关于C# 杀死一个 labview 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34340605/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com