Beispiel #1
0
        public static void SyncWait(IEnumerator runner)
        {
            var coroutine = new CoRoutine(runner);

            while (coroutine.Pump())
            {
            }
        }
Beispiel #2
0
        public static T SyncWaitGet <T>(IEnumerator runner)
        {
            var coroutine = new CoRoutine(runner);

            while (coroutine.Pump())
            {
            }

            return((T)coroutine.ReturnValue);
        }
Beispiel #3
0
        public static void SyncWaitWithTimeout(IEnumerator runner, float timeout)
        {
            var startTime = DateTime.UtcNow;
            var coroutine = new CoRoutine(runner);

            while (coroutine.Pump())
            {
                if ((DateTime.UtcNow - startTime).TotalSeconds > timeout)
                {
                    throw new CoRoutineTimeoutException();
                }
            }
        }
Beispiel #4
0
        public static IEnumerator <T> Wrap <T>(IEnumerator runner)
        {
            var coroutine = new CoRoutine(runner);

            while (coroutine.Pump())
            {
                yield return(default(T));
            }

            if (coroutine.ReturnValue != null)
            {
                Assert.That(coroutine.ReturnValue.GetType().DerivesFromOrEqual <T>(),
                            "Unexpected type returned from coroutine!  Expected '{0}' and found '{1}'", typeof(T).Name, coroutine.ReturnValue.GetType().Name);
            }

            yield return((T)coroutine.ReturnValue);
        }
Beispiel #5
0
 public IEnumerator <T> ProcessPrjCommandForResult <T>(string statusName, IEnumerator prjTask)
 {
     return(CoRoutine.Wrap <T>(ProcessPrjCommand(statusName, prjTask)));
 }
Beispiel #6
0
 public IEnumerator <int> PromptForUserChoice(
     string question, string[] choices, string title = null, string styleOverride = null, int enterChoice = -1, int exitChoice = -1)
 {
     return(CoRoutine.Wrap <int>(
                PromptForUserChoiceInternal(question, choices, title, styleOverride, enterChoice, exitChoice)));
 }
Beispiel #7
0
 IEnumerator <InstallReleaseUserChoices> CheckShouldInstall(ReleaseInfo releaseInfo)
 {
     return(CoRoutine.Wrap <InstallReleaseUserChoices>(CheckShouldInstallInternal(releaseInfo)));
 }