fix: terminate automation commands through AutoCAD queue

This commit is contained in:
codex
2026-08-04 07:37:56 +03:00
parent 2d9fbdd474
commit c633107273
2 changed files with 5 additions and 5 deletions
@@ -268,13 +268,13 @@ internal sealed class FirstLimitedApplyAutomationCoordinator
{
if (IsTerminal || document is null) return;
transitions.Add("CommandQueued:" + command);
document.SendStringToExecute(command + " ", true, false, false);
document.SendStringToExecute(command + "\n", true, false, false);
}
private void QueueReadinessBarrier()
{
if (IsTerminal || document is null) return;
transitions.Add("ReadinessBarrierQueued");
document.SendStringToExecute("PHP_REC_AUTOMATION_READY ", true, false, false);
document.SendStringToExecute("PHP_REC_AUTOMATION_READY\n", true, false, false);
}
private void OnCommandEnded(object sender, CommandEventArgs e)
{
@@ -396,7 +396,7 @@ internal sealed class FirstLimitedApplyAutomationCoordinator
// Persist the exit boundary before handing control back to AutoCAD;
// process termination can otherwise prevent the final evidence flush.
TryWriteEvidence(functionalCompleted, null);
exitDocument.SendStringToExecute("_.QUIT _N ", true, false, false);
exitDocument.SendStringToExecute("_.QUIT _N\n", true, false, false);
document = null;
automationOpenedDocuments.Clear();
}
@@ -116,7 +116,7 @@ public sealed class FoundationTests
Assert.Contains("RequestControlledExit", source);
Assert.Contains("AcadApplication.Idle += OnExitIdle", source);
Assert.Contains("QuitDispatchAttempted", source);
Assert.Contains("exitDocument.SendStringToExecute(\"_.QUIT _N \", true, false, false);", source);
Assert.Contains("exitDocument.SendStringToExecute(\"_.QUIT _N\\n\", true, false, false);", source);
Assert.Contains("var exitDocument = AcadApplication.DocumentManager.MdiActiveDocument;", source);
}
@@ -186,7 +186,7 @@ public sealed class FoundationTests
{
var source = File.ReadAllText(Path.Combine(ProjectRoot, "src", "PRecAnnot.Plant3D2026", "FirstLimitedApplyAutomation.cs"));
var exit = source[source.IndexOf("private void DispatchNativeQuit", StringComparison.Ordinal)..];
Assert.True(exit.IndexOf("TryWriteEvidence(functionalCompleted, null);", StringComparison.Ordinal) < exit.IndexOf("SendStringToExecute(\"_.QUIT _N ", StringComparison.Ordinal));
Assert.True(exit.IndexOf("TryWriteEvidence(functionalCompleted, null);", StringComparison.Ordinal) < exit.IndexOf("SendStringToExecute(\"_.QUIT _N\\n", StringComparison.Ordinal));
Assert.Contains("EvidenceFlushed = evidenceFlushed", source);
Assert.Contains("CommandsCompleted", source);
Assert.Contains("InspectorsCompleted", source);