コード例 #1
0
        /// <summary>Run action on the threadPool and return to main thread if configureAwait = true.</summary>
        public static async UniTask <T> Run <T>(Func <T> func, bool configureAwait = true)
        {
            await UniTask.SwitchToThreadPool();

            if (configureAwait)
            {
                try
                {
                    return(func());
                }
                finally
                {
                    await UniTask.Yield();
                }
            }
            else
            {
                return(func());
            }
        }
コード例 #2
0
        /// <summary>Run action on the threadPool and return to main thread if configureAwait = true.</summary>
        public static async UniTask Run(Action action, bool configureAwait = true)
        {
            await UniTask.SwitchToThreadPool();

            if (configureAwait)
            {
                try
                {
                    action();
                }
                finally
                {
                    await UniTask.Yield();
                }
            }
            else
            {
                action();
            }
        }
コード例 #3
0
        /// <summary>Run action on the threadPool and return to main thread if configureAwait = true.</summary>
        public static async UniTask Run(Func <object, UniTask> action, object state, bool configureAwait = true)
        {
            await UniTask.SwitchToThreadPool();

            if (configureAwait)
            {
                try
                {
                    await action(state);
                }
                finally
                {
                    await UniTask.Yield();
                }
            }
            else
            {
                await action(state);
            }
        }
コード例 #4
0
 public UniTask ToUniTask()
 {
     return(UniTask.Yield(timing, CancellationToken.None));
 }
コード例 #5
0
 /// <summary>
 /// Same as UniTask.Yield(PlayerLoopTiming.FixedUpdate, cancellationToken).
 /// </summary>
 public static UniTask WaitForFixedUpdate(CancellationToken cancellationToken)
 {
     return(UniTask.Yield(PlayerLoopTiming.FixedUpdate, cancellationToken));
 }
コード例 #6
0
 /// <summary>
 /// Same as UniTask.Yield(PlayerLoopTiming.FixedUpdate).
 /// </summary>
 public static YieldAwaitable WaitForFixedUpdate()
 {
     return(UniTask.Yield(PlayerLoopTiming.FixedUpdate));
 }
コード例 #7
0
 /// <summary>
 /// Same as UniTask.Yield(PlayerLoopTiming.LastPostLateUpdate, cancellationToken).
 /// </summary>
 public static UniTask WaitForEndOfFrame(CancellationToken cancellationToken)
 {
     return(UniTask.Yield(PlayerLoopTiming.LastPostLateUpdate, cancellationToken));
 }
コード例 #8
0
 /// <summary>
 /// Same as UniTask.Yield(PlayerLoopTiming.LastPostLateUpdate).
 /// </summary>
 public static YieldAwaitable WaitForEndOfFrame()
 {
     return(UniTask.Yield(PlayerLoopTiming.LastPostLateUpdate));
 }
コード例 #9
0
        public static async UniTask WaitAsync(this JobHandle jobHandle, PlayerLoopTiming waitTiming)
        {
            await UniTask.Yield(waitTiming);

            jobHandle.Complete();
        }