C#-在java进程停止后停止ServiceProcess包装器

C#-在java进程停止后停止ServiceProcess包装器,java,c#,batch-file,service,Java,C#,Batch File,Service,我正在构建一个c sharp serviceProcess,它将启动一个批处理文件(批处理文件将启动一个java应用程序)。 如果我停止服务,它将终止java进程。停止java进程可能需要2分钟。服务必须等待java应用程序停止,所以我睡了一觉 System.Threading.Thread.Sleep( ); 是否可以检查“java”进程是否已关闭,然后停止ServiceProcess。您可以使用。它允许您获取有关特定流程的多个信息。当您直接启动java.exe(使用Process.star

我正在构建一个c sharp serviceProcess,它将启动一个批处理文件(批处理文件将启动一个java应用程序)。 如果我停止服务,它将终止java进程。停止java进程可能需要2分钟。服务必须等待java应用程序停止,所以我睡了一觉

System.Threading.Thread.Sleep( );

是否可以检查“java”进程是否已关闭,然后停止ServiceProcess。

您可以使用。它允许您获取有关特定流程的多个信息。当您直接启动java.exe(使用
Process.start
)时,您已经拥有了
进程
-实例


当使用批处理文件时,您需要找到流程,这根本不是问题。您可以使用找到一个进程,但您可以找到在您的计算机上运行的所有java进程。

您可以使用访问该进程。它允许您获取有关特定流程的多个信息。当您直接启动java.exe(使用
Process.start
)时,您已经拥有了
进程
-实例


当使用批处理文件时,您需要找到流程,这根本不是问题。您可以使用找到一个进程,但您可以找到在您的计算机上运行的所有java进程。

您可以尝试以下方法:

        Process[] proc = Process.GetProcessesByName("Java");
        if (proc.Count() != 0)
        {
            //Process Alive
            Process prod = proc[0];
            prod.Kill();
            prod.WaitForExit();
        }
        else
        {
            //Process Dead
        }
更好的选择是使用进程ID(如果您知道的话)


警告:这将终止它找到的第一个java进程,您需要检查需要终止的进程…

您可以尝试以下操作:

        Process[] proc = Process.GetProcessesByName("Java");
        if (proc.Count() != 0)
        {
            //Process Alive
            Process prod = proc[0];
            prod.Kill();
            prod.WaitForExit();
        }
        else
        {
            //Process Dead
        }
更好的选择是使用进程ID(如果您知道的话)

警告:这将杀死它找到的第一个java进程,您需要检查需要杀死哪个进程