fix: terminate automation commands through AutoCAD queue
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user