#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member using System; using System.Threading; namespace Cysharp.Threading.Tasks { public partial struct UniTask { #region OBSOLETE_RUN [Obsolete("UniTask.Run is similar as Task.Run, it uses ThreadPool. For equivalent behaviour, use UniTask.RunOnThreadPool instead. If you don't want to use ThreadPool, you can use UniTask.Void(async void) or UniTask.Create(async UniTask) too.")] public static UniTask Run(Action action, bool configureAwait = true, CancellationToken cancellationToken = default) { return RunOnThreadPool(action, configureAwait, cancellationToken); } [Obsolete("UniTask.Run is similar as Task.Run, it uses ThreadPool. For equivalent behaviour, use UniTask.RunOnThreadPool instead. If you don't want to use ThreadPool, you can use UniTask.Void(async void) or UniTask.Create(async UniTask) too.")] public static UniTask Run(Action action, object state, bool configureAwait = true, CancellationToken cancellationToken = default) { return RunOnThreadPool(action, state, configureAwait, cancellationToken); } [Obsolete("UniTask.Run is similar as Task.Run, it uses ThreadPool. For equivalent behaviour, use UniTask.RunOnThreadPool instead. If you don't want to use ThreadPool, you can use UniTask.Void(async void) or UniTask.Create(async UniTask) too.")] public static UniTask Run(Func action, bool configureAwait = true, CancellationToken cancellationToken = default) { return RunOnThreadPool(action, configureAwait, cancellationToken); } [Obsolete("UniTask.Run is similar as Task.Run, it uses ThreadPool. For equivalent behaviour, use UniTask.RunOnThreadPool instead. If you don't want to use ThreadPool, you can use UniTask.Void(async void) or UniTask.Create(async UniTask) too.")] public static UniTask Run(Func action, object state, bool configureAwait = true, CancellationToken cancellationToken = default) { return RunOnThreadPool(action, state, configureAwait, cancellationToken); } [Obsolete("UniTask.Run is similar as Task.Run, it uses ThreadPool. For equivalent behaviour, use UniTask.RunOnThreadPool instead. If you don't want to use ThreadPool, you can use UniTask.Void(async void) or UniTask.Create(async UniTask) too.")] public static UniTask Run(Func func, bool configureAwait = true, CancellationToken cancellationToken = default) { return RunOnThreadPool(func, configureAwait, cancellationToken); } [Obsolete("UniTask.Run is similar as Task.Run, it uses ThreadPool. For equivalent behaviour, use UniTask.RunOnThreadPool instead. If you don't want to use ThreadPool, you can use UniTask.Void(async void) or UniTask.Create(async UniTask) too.")] public static UniTask Run(Func> func, bool configureAwait = true, CancellationToken cancellationToken = default) { return RunOnThreadPool(func, configureAwait, cancellationToken); } [Obsolete("UniTask.Run is similar as Task.Run, it uses ThreadPool. For equivalent behaviour, use UniTask.RunOnThreadPool instead. If you don't want to use ThreadPool, you can use UniTask.Void(async void) or UniTask.Create(async UniTask) too.")] public static UniTask Run(Func func, object state, bool configureAwait = true, CancellationToken cancellationToken = default) { return RunOnThreadPool(func, state, configureAwait, cancellationToken); } [Obsolete("UniTask.Run is similar as Task.Run, it uses ThreadPool. For equivalent behaviour, use UniTask.RunOnThreadPool instead. If you don't want to use ThreadPool, you can use UniTask.Void(async void) or UniTask.Create(async UniTask) too.")] public static UniTask Run(Func> func, object state, bool configureAwait = true, CancellationToken cancellationToken = default) { return RunOnThreadPool(func, state, configureAwait, cancellationToken); } #endregion /// Run action on the threadPool and return to main thread if configureAwait = true. public static async UniTask RunOnThreadPool(Action action, bool configureAwait = true, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); await UniTask.SwitchToThreadPool(); cancellationToken.ThrowIfCancellationRequested(); if (configureAwait) { try { action(); } finally { await UniTask.Yield(); } } else { action(); } cancellationToken.ThrowIfCancellationRequested(); } /// Run action on the threadPool and return to main thread if configureAwait = true. public static async UniTask RunOnThreadPool(Action action, object state, bool configureAwait = true, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); await UniTask.SwitchToThreadPool(); cancellationToken.ThrowIfCancellationRequested(); if (configureAwait) { try { action(state); } finally { await UniTask.Yield(); } } else { action(state); } cancellationToken.ThrowIfCancellationRequested(); } /// Run action on the threadPool and return to main thread if configureAwait = true. public static async UniTask RunOnThreadPool(Func action, bool configureAwait = true, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); await UniTask.SwitchToThreadPool(); cancellationToken.ThrowIfCancellationRequested(); if (configureAwait) { try { await action(); } finally { await UniTask.Yield(); } } else { await action(); } cancellationToken.ThrowIfCancellationRequested(); } /// Run action on the threadPool and return to main thread if configureAwait = true. public static async UniTask RunOnThreadPool(Func action, object state, bool configureAwait = true, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); await UniTask.SwitchToThreadPool(); cancellationToken.ThrowIfCancellationRequested(); if (configureAwait) { try { await action(state); } finally { await UniTask.Yield(); } } else { await action(state); } cancellationToken.ThrowIfCancellationRequested(); } /// Run action on the threadPool and return to main thread if configureAwait = true. public static async UniTask RunOnThreadPool(Func func, bool configureAwait = true, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); await UniTask.SwitchToThreadPool(); cancellationToken.ThrowIfCancellationRequested(); if (configureAwait) { try { return func(); } finally { await UniTask.Yield(); cancellationToken.ThrowIfCancellationRequested(); } } else { return func(); } } /// Run action on the threadPool and return to main thread if configureAwait = true. public static async UniTask RunOnThreadPool(Func> func, bool configureAwait = true, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); await UniTask.SwitchToThreadPool(); cancellationToken.ThrowIfCancellationRequested(); if (configureAwait) { try { return await func(); } finally { cancellationToken.ThrowIfCancellationRequested(); await UniTask.Yield(); cancellationToken.ThrowIfCancellationRequested(); } } else { var result = await func(); cancellationToken.ThrowIfCancellationRequested(); return result; } } /// Run action on the threadPool and return to main thread if configureAwait = true. public static async UniTask RunOnThreadPool(Func func, object state, bool configureAwait = true, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); await UniTask.SwitchToThreadPool(); cancellationToken.ThrowIfCancellationRequested(); if (configureAwait) { try { return func(state); } finally { await UniTask.Yield(); cancellationToken.ThrowIfCancellationRequested(); } } else { return func(state); } } /// Run action on the threadPool and return to main thread if configureAwait = true. public static async UniTask RunOnThreadPool(Func> func, object state, bool configureAwait = true, CancellationToken cancellationToken = default) { cancellationToken.ThrowIfCancellationRequested(); await UniTask.SwitchToThreadPool(); cancellationToken.ThrowIfCancellationRequested(); if (configureAwait) { try { return await func(state); } finally { cancellationToken.ThrowIfCancellationRequested(); await UniTask.Yield(); cancellationToken.ThrowIfCancellationRequested(); } } else { var result = await func(state); cancellationToken.ThrowIfCancellationRequested(); return result; } } } }