private ExitUnityResult KillProcess() { ExitUnityResult result = null; try { var possibleProcessId = TryGetUnityProcessId(); if (possibleProcessId > 0) { Process process = null; try { process = Process.GetProcessById((int)possibleProcessId); } catch (Exception) { // process may not be running } if (process != null) { process.Kill(); result = new ExitUnityResult(true, null, null); } } } catch (Exception e) { result = new ExitUnityResult(false, "Exception on attempt to kill Unity Editor process", e); } return(result); }
private Task <ExitUnityResult> WaitModelUpdate() { var successExitResult = new ExitUnityResult(true, null, null); if (!myBackendUnityHost.BackendUnityModel.HasValue()) { return(Task.FromResult(successExitResult)); } var taskSource = new TaskCompletionSource <ExitUnityResult>(); var waitLifetimeDef = myLifetime.CreateNested(); waitLifetimeDef.SynchronizeWith(taskSource); // Wait RdModel Update myBackendUnityHost.BackendUnityModel.ViewNull(waitLifetimeDef.Lifetime, _ => taskSource.SetResult(successExitResult)); return(taskSource.Task); }