java - 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());
解决方案
推荐阅读
- scala - scala 中的 foreach() 返回一个 Seq。如何到达物品?
- java - 为什么在使用哈希图获取超时错误查找时接受哈希集解决方案 - 在具有差异 K 的数组中查找对?
- flutter - 调用 openDrawer 时如何使用 setState?
- python - 使用形状的因子级别将 pandas.DataFrame 转换为 numpy 张量
- function - 函数参数基于第一个参数的动态类型
- html - 样式为按钮输入的复选框:选中的背景颜色不占用按钮空间
- python - 如何在这里从 span=(2494, 2516) 获取第一个数字?
- python - Paramiko 中只有 pwd 命令成功,其他命令失败并显示“ksh: ...: cannot execute - No such file or directory”
- excel - 复制并粘贴到名称不等于列表中值的工作表?
- python - CSV 文件已写入,但输出不正确