C#-在java进程停止后停止ServiceProcess包装器
我正在构建一个c sharp serviceProcess,它将启动一个批处理文件(批处理文件将启动一个java应用程序)。 如果我停止服务,它将终止java进程。停止java进程可能需要2分钟。服务必须等待java应用程序停止,所以我睡了一觉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
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进程,您需要检查需要杀死哪个进程