Exemplo n.º 1
0
        /// <summary>Run action on the threadPool and return to current SynchronizationContext if configureAwait = true.</summary>
        public static async UniTask <T> Run <T>(Func <T> func, bool configureAwait = true)
        {
            if (configureAwait)
            {
                var current = SynchronizationContext.Current;
                await UniTask.SwitchToThreadPool();

                try
                {
                    return(func());
                }
                finally
                {
                    if (current != null)
                    {
                        await UniTask.SwitchToSynchronizationContext(current);
                    }
                }
            }
            else
            {
                await UniTask.SwitchToThreadPool();

                return(func());
            }
        }
Exemplo n.º 2
0
        /// <summary>Run action on the threadPool and return to current SynchronizationContext if configureAwait = true.</summary>
        public static async UniTask Run(Action <object> action, object state, bool configureAwait = true)
        {
            if (configureAwait)
            {
                var current = SynchronizationContext.Current;
                await UniTask.SwitchToThreadPool();

                try
                {
                    action(state);
                }
                finally
                {
                    if (current != null)
                    {
                        await UniTask.SwitchToSynchronizationContext(current);
                    }
                }
            }
            else
            {
                await UniTask.SwitchToThreadPool();

                action(state);
            }
        }