#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 // Run is a confusing name, use only RunOnThreadPool in the future. /// [Obsolete]recommend to use RunOnThreadPool(or UniTask.Void(async void), UniTask.Create(async UniTask)). public static async UniTask Run(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(); } /// [Obsolete]recommend to use RunOnThreadPool(or UniTask.Void(async void), UniTask.Create(async UniTask)). public static async UniTask Run(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(); } /// [Obsolete]recommend to use RunOnThreadPool(or UniTask.Void(async void), UniTask.Create(async UniTask)). public static async UniTask Run(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(); } /// [Obsolete]recommend to use RunOnThreadPool(or UniTask.Void(async void), UniTask.Create(async UniTask)). public static async UniTask Run(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(); } /// [Obsolete]recommend to use RunOnThreadPool(or UniTask.Void(async void), UniTask.Create(async UniTask)). public static async UniTask Run(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(); } } /// [Obsolete]recommend to use RunOnThreadPool(or UniTask.Void(async void), UniTask.Create(async UniTask)). public static async UniTask Run(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; } } /// [Obsolete]recommend to use RunOnThreadPool(or UniTask.Void(async void), UniTask.Create(async UniTask)). public static async UniTask Run(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); } } /// [Obsolete]recommend to use RunOnThreadPool(or UniTask.Void(async void), UniTask.Create(async UniTask)). public static async UniTask Run(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; } } #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; } } } }