From 033b639121e713254d8ebbf13ce5d812229e8a18 Mon Sep 17 00:00:00 2001 From: tian <11429339@qq.com> Date: Thu, 6 Aug 2026 23:46:00 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E5=89=AF=E5=AE=9E=E4=BE=8B=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E6=94=B9=E7=9B=B4=E6=8E=A5=20Kill=EF=BC=88=E6=B6=88?= =?UTF-8?q?=E9=99=A4'=E6=A8=A1=E5=9E=8B=E5=B7=B2=E4=BF=AE=E6=94=B9'?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=2010=20=E7=A7=92=E9=98=BB=E5=A1=9E=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:副实例检测(动画/高亮)修改了文档 → 优雅关闭(CloseMainWindow) 触发 NW 原生'模型文件已修改,是否保存'模态弹窗 → WaitForExit(10s) 超时 → Kill——每任务浪费约 10 秒。 修复:副实例是临时检测进程(检测已完成、报告已回传)——直接 Kill (TerminateProcess 不触发弹窗);进程退出后句柄释放(WaitForExit 5s), 工作目录清理重试机制不受影响。 验证:F1 任务 60 秒完成(含副实例启动+就绪+检测),关闭秒级无弹窗 --- src/Core/Services/NavisworksInstanceManager.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Core/Services/NavisworksInstanceManager.cs b/src/Core/Services/NavisworksInstanceManager.cs index 8c4c89c..4b09000 100644 --- a/src/Core/Services/NavisworksInstanceManager.cs +++ b/src/Core/Services/NavisworksInstanceManager.cs @@ -252,18 +252,21 @@ namespace NavisworksTransport.Core.Services { if (!process.HasExited) { - process.CloseMainWindow(); - if (!process.WaitForExit(10000)) + // 🔥 直接强制关闭(不优雅退出):副实例是临时检测进程(检测已完成、报告已回传), + // 动画/高亮修改过文档 → 优雅关闭会弹出“模型文件已修改,是否保存”对话框, + // 模态弹窗阻塞 WaitForExit 直到超时(10 秒)——拖慢批处理。 + // Kill(TerminateProcess)不触发该弹窗;句柄由进程退出释放(下方 WaitForExit 等待)。 + process.Kill(); + if (!process.WaitForExit(5000)) { - process.Kill(); - LogManager.Warning($"[实例管理] 副实例未优雅退出,已强制关闭(端口 {handle.Port})"); + LogManager.Warning($"[实例管理] 副实例强杀后未及时退出(端口 {handle.Port})"); } } // 确保进程完全退出(释放模型文件句柄,供调用方清理工作目录) if (!process.HasExited) { - process.WaitForExit(10000); + process.WaitForExit(5000); } } catch (Exception ex)