Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }