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();
                }
            }