Prevent UnitTasks from continuing after exiting play mode #22

master 1.1.0
neuecc 2019-06-28 20:41:04 +09:00
parent 021a1da1fa
commit f82c762263
3 changed files with 20 additions and 10 deletions

View File

@ -195,7 +195,6 @@ namespace UniRx.AsyncTests
var currentThreadId = Thread.CurrentThread.ManagedThreadId;
UnityEngine.Debug.Log("Before:" + currentThreadId);
await UniTask.SwitchToThreadPool();
@ -209,7 +208,6 @@ namespace UniRx.AsyncTests
var switchedThreadId = Thread.CurrentThread.ManagedThreadId;
UnityEngine.Debug.Log("After:" + switchedThreadId);
currentThreadId.Should().NotBe(switchedThreadId);

View File

@ -232,14 +232,6 @@ namespace UniRx.Async
};
}
static IEnumerator UnwrapEnumerator(IEnumerator enumerator)
{
while (enumerator.MoveNext())
{
yield return null;
}
}
static IEnumerator UnwrapWaitAsyncOperation(AsyncOperation asyncOperation)
{
while (!asyncOperation.isDone)

View File

@ -67,13 +67,33 @@ namespace UniRx.Async
var yieldLoop = new PlayerLoopSystem
{
type = loopRunnerYieldType,
#if UNITY_EDITOR
updateDelegate = () =>
{
if (Application.isPlaying)
{
cq.Run();
}
}
#else
updateDelegate = cq.Run
#endif
};
var runnerLoop = new PlayerLoopSystem
{
type = loopRunnerType,
#if UNITY_EDITOR
updateDelegate = () =>
{
if (Application.isPlaying)
{
runner.Run();
}
}
#else
updateDelegate = runner.Run
#endif
};
var dest = new PlayerLoopSystem[loopSystem.subSystemList.Length + 2];