public void Dispose() { RserveToken?.Cancel(); RTermToken?.Cancel(); if (RtermProcess != null) { Connection?.Dispose(); RtermProcess?.Kill(); RtermProcess?.Dispose(); } else { Connection?.Dispose(); } }
private void FindRTermProcess() { while (RTermToken != null && !RTermToken.IsCancellationRequested) { if (RtermProcess == null) { RtermProcess = StartPServeWithRTerm(); } else if (RtermProcess.HasExited) { logger.Debug($"rProcess terminated at {RtermProcess.ExitTime}, exitcode: {RtermProcess.ExitCode}"); // Try to start the process again, but wait a little bit before trying since it could be a normal shutdown Thread.Sleep(10000); RtermProcess?.Dispose(); RtermProcess = null; } Thread.Sleep(2500); } }