C# 杀死一个 labview 应用程序

标签 c# system.diagnostics

我在终止 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/

相关文章:

c# - 如何在 asp.net MVC 中获取最后保存的(不是最近保存的)行的 ID?

c# - List <int>分成三份

C# 应用程序的行为类似于 WINDBG 的 "step into"功能

c# - Visual Studio 2008 调试问题

c# - 如何在 Zebra 打印机上使用 windows-1250 代码页进行打印?

c# - 无法使用实例引用访问

c# - 如何获取 System.Diagnostics.Process 的输出?

asp.net - 异常后诊断跟踪数据消失

c# - vcruntime140.dll 与 vcruntime140d.dll

c# - 从 TextWriterTraceListener 获取跟踪文件名?