首页 > 解决方案 > Process.WaitForExit() 挂起

问题描述

我在 .NET Core 2.2 上运行了以下 C# 代码来启动 Java 进程并等待其执行:

using (var validator = new Process())
{
validator.StartInfo.FileName = "java";
validator.StartInfo.Arguments = finalArguments;
validator.StartInfo.UseShellExecute = false;
validator.StartInfo.RedirectStandardOutput = true;
validator.StartInfo.RedirectStandardError = true;

try
{
    validator.Start();
    validator.WaitForExit();
}

在 Linux 上运行时,此代码运行良好 - Java 进程运行并退出。

在 Windows 上运行时,Java 进程由于某种原因会挂起很长一段时间并且不能正确退出:

任务管理器视图

如果我暂停调试器,调试器会在validator.WaitForExit();. 如果我手动终止 Java 进程,我的应用程序将照常继续。

什么可能导致 Java 进程挂起并且无法在 Windows 上正确退出?

编辑:我正在异步运行我的函数,因此它不会挂起应用程序,以防它有所作为:

Task<OperationOutcome> validateWithJava = Task.Run(() => ValidateWithJava());

标签: javac#windows.net-core

解决方案


推荐阅读