public IEnumerator TestUnityWait() { var coroutineMonoRunner = new CoroutineMonoRunner("test1"); ITaskRoutine <IEnumerator> taskRoutine = TaskRunner.Instance.AllocateNewTaskRoutine(coroutineMonoRunner); taskRoutine.SetEnumeratorProvider(new WaitForSecondsUnity().GetEnumerator); taskRoutine.Start(); DateTime then = DateTime.Now; while (taskRoutine.isRunning == true) { yield return(null); } coroutineMonoRunner.Dispose(); var totalSeconds = (DateTime.Now - then).TotalSeconds; Assert.That(totalSeconds, Is.InRange(0.9, 1.1)); }
// Use this for initialization void Start() { _taskRountine = TaskRunner.Instance.AllocateNewTaskRoutine(); _taskRountine.SetEnumeratorProvider(ResetTaskAndRun); //The Task routine is pooled! You could have used Start directly, but you need to use SetEnumeratorProvider if you want restart the TaskRoutine later _taskRountine.Start(); }