Process.WaitForExit()挂起

时间:2019-06-07 09:07:33

标签: java c# windows .net-core

我在.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进程由于某种原因将挂起很长时间,并且无法正确退出:

Task manager view

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

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

编辑:我正在异步运行我的函数,因此它不会挂起应用程序,以防万一。

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

0 个答案:

没有答案