public TestIsolationServer GetTestIsolationServer(DebuggerSetup debuggerSetup) { if (server != null) { return(server); } try { statusReporter("Attaching to AutoCAD."); string ipcPortName = "AcadTestIsolationContext." + Hash64.CreateUniqueHash(); Guid uniqueId = Guid.NewGuid(); server = new TestIsolationServer(ipcPortName, uniqueId); process.Start(ipcPortName, uniqueId, debuggerSetup); return(server); } catch { if (process != null) { process.Dispose(); } if (server != null) { server.Dispose(); } throw; } }
/// <inheritdoc /> protected override object RunIsolatedTaskImpl <TIsolatedTask>(HostSetup hostSetup, StatusReporter statusReporter, object[] args) { if (batch == null) { using (BeginBatch(statusReporter)) RunIsolatedTaskImpl <TIsolatedTask>(hostSetup, statusReporter, args); } TestIsolationServer server = batch.GetTestIsolationServer(hostSetup.DebuggerSetup); return(server.RunIsolatedTaskOnClient(typeof(TIsolatedTask), args)); }
public void Dispose() { statusReporter("Detaching from AutoCAD."); if (server != null) { server.Shutdown(ShutdownTimeout); server = null; } if (process != null) { process.Dispose(); } }