mirror of https://github.com/Cysharp/UniTask
feat: ✨ add UniTaskWithToken
parent
1173bb4f34
commit
a164752a8a
|
@ -0,0 +1,95 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
|
||||
namespace Cysharp.Threading.Tasks
|
||||
{
|
||||
public readonly struct UniTaskWithToken
|
||||
{
|
||||
public readonly CancellationToken cancellationToken;
|
||||
public UniTaskWithToken(CancellationToken cancellationToken)
|
||||
=> this.cancellationToken = cancellationToken;
|
||||
#region UniTask.Delay
|
||||
public UniTask Yield(PlayerLoopTiming timing = PlayerLoopTiming.Update)
|
||||
=> UniTask.Yield(timing, cancellationToken);
|
||||
public UniTask NextFrame(PlayerLoopTiming timing = PlayerLoopTiming.Update)
|
||||
=> UniTask.NextFrame(timing, cancellationToken);
|
||||
public UniTask WaitForEndOfFrame()
|
||||
=> UniTask.WaitForEndOfFrame(cancellationToken);
|
||||
public UniTask WaitForFixedUpdate()
|
||||
=> UniTask.WaitForFixedUpdate(cancellationToken);
|
||||
public UniTask DelayFrame(int delayFrameCount, PlayerLoopTiming delayTiming = PlayerLoopTiming.Update)
|
||||
=> UniTask.DelayFrame(delayFrameCount, delayTiming, cancellationToken);
|
||||
public UniTask Delay(int millisecondsDelay, bool ignoreTimeScale = false, PlayerLoopTiming delayTiming = PlayerLoopTiming.Update)
|
||||
=> UniTask.Delay(millisecondsDelay, ignoreTimeScale, delayTiming, cancellationToken);
|
||||
public UniTask Delay(TimeSpan delayTimeSpan, bool ignoreTimeScale = false, PlayerLoopTiming delayTiming = PlayerLoopTiming.Update)
|
||||
=> UniTask.Delay(delayTimeSpan, ignoreTimeScale, delayTiming, cancellationToken);
|
||||
public UniTask Delay(int millisecondsDelay, DelayType delayType, PlayerLoopTiming delayTiming = PlayerLoopTiming.Update)
|
||||
=> UniTask.Delay(millisecondsDelay, delayType, delayTiming, cancellationToken);
|
||||
public UniTask Delay(TimeSpan delayTimeSpan, DelayType delayType, PlayerLoopTiming delayTiming = PlayerLoopTiming.Update)
|
||||
=> UniTask.Delay(delayTimeSpan, delayType, delayTiming, cancellationToken);
|
||||
#endregion
|
||||
#region UniTask.Factory
|
||||
public UniTask FromCanceled()
|
||||
=> UniTask.FromCanceled(cancellationToken);
|
||||
public UniTask<T> FromCanceled<T>()
|
||||
=> UniTask.FromCanceled<T>(cancellationToken);
|
||||
public void Void(Func<CancellationToken, UniTaskVoid> asyncAction)
|
||||
=> UniTask.Void(asyncAction, cancellationToken);
|
||||
public Action Action(Func<CancellationToken, UniTaskVoid> asyncAction)
|
||||
=> UniTask.Action(asyncAction, cancellationToken);
|
||||
#if UNITY_2018_3_OR_NEWER
|
||||
public UnityEngine.Events.UnityAction UnityAction(Func<CancellationToken, UniTaskVoid> asyncAction)
|
||||
=> UniTask.UnityAction(asyncAction, cancellationToken);
|
||||
#endif
|
||||
public UniTask Never()
|
||||
=> UniTask.Never(cancellationToken);
|
||||
public UniTask<T> Never<T>()
|
||||
=> UniTask.Never<T>(cancellationToken);
|
||||
#endregion
|
||||
#region UniTask.Run
|
||||
public async UniTask RunOnThreadPool(Action action, bool configureAwait = true)
|
||||
=> await UniTask.RunOnThreadPool(action, configureAwait, cancellationToken);
|
||||
public async UniTask RunOnThreadPool(Action<object> action, object state, bool configureAwait = true)
|
||||
=> await UniTask.RunOnThreadPool(action, state, configureAwait, cancellationToken);
|
||||
public async UniTask RunOnThreadPool(Func<UniTask> action, bool configureAwait = true)
|
||||
=> await UniTask.RunOnThreadPool(action, configureAwait, cancellationToken);
|
||||
public async UniTask RunOnThreadPool(Func<object, UniTask> action, object state, bool configureAwait = true)
|
||||
=> await UniTask.RunOnThreadPool(action, state, configureAwait, cancellationToken);
|
||||
public async UniTask<T> RunOnThreadPool<T>(Func<T> func, bool configureAwait = true)
|
||||
=> await UniTask.RunOnThreadPool(func, configureAwait, cancellationToken);
|
||||
public async UniTask<T> RunOnThreadPool<T>(Func<UniTask<T>> func, bool configureAwait = true)
|
||||
=> await UniTask.RunOnThreadPool(func, configureAwait, cancellationToken);
|
||||
public async UniTask<T> RunOnThreadPool<T>(Func<object, T> func, object state, bool configureAwait = true)
|
||||
=> await UniTask.RunOnThreadPool(func, state, configureAwait, cancellationToken);
|
||||
public async UniTask<T> RunOnThreadPool<T>(Func<object, UniTask<T>> func, object state, bool configureAwait = true)
|
||||
=> await UniTask.RunOnThreadPool(func, state, configureAwait, cancellationToken);
|
||||
#endregion
|
||||
#region UniTask.Threading
|
||||
#if UNITY_2018_3_OR_NEWER
|
||||
public SwitchToMainThreadAwaitable SwitchToMainThread()
|
||||
=> UniTask.SwitchToMainThread(cancellationToken);
|
||||
public SwitchToMainThreadAwaitable SwitchToMainThread(PlayerLoopTiming timing)
|
||||
=> UniTask.SwitchToMainThread(timing, cancellationToken);
|
||||
public ReturnToMainThread ReturnToMainThread()
|
||||
=> UniTask.ReturnToMainThread(cancellationToken);
|
||||
public ReturnToMainThread ReturnToMainThread(PlayerLoopTiming timing)
|
||||
=> UniTask.ReturnToMainThread(timing, cancellationToken);
|
||||
#endif
|
||||
public SwitchToSynchronizationContextAwaitable SwitchToSynchronizationContext(SynchronizationContext synchronizationContext)
|
||||
=> UniTask.SwitchToSynchronizationContext(synchronizationContext, cancellationToken);
|
||||
public ReturnToSynchronizationContext ReturnToCurrentSynchronizationContext(bool dontPostWhenSameContext = true)
|
||||
=> UniTask.ReturnToCurrentSynchronizationContext(dontPostWhenSameContext, cancellationToken);
|
||||
#endregion
|
||||
#region UniTask.WaitUntil
|
||||
public UniTask WaitUntil(Func<bool> predicate, PlayerLoopTiming timing = PlayerLoopTiming.Update)
|
||||
=> UniTask.WaitUntil(predicate, timing, cancellationToken);
|
||||
public UniTask WaitWhile(Func<bool> predicate, PlayerLoopTiming timing = PlayerLoopTiming.Update)
|
||||
=> UniTask.WaitWhile(predicate, timing, cancellationToken);
|
||||
public UniTask WaitUntilCanceled(CancellationToken cancellationToken, PlayerLoopTiming timing = PlayerLoopTiming.Update)
|
||||
=> UniTask.WaitUntilCanceled(cancellationToken, timing);
|
||||
public UniTask<U> WaitUntilValueChanged<T, U>(T target, Func<T, U> monitorFunction, PlayerLoopTiming monitorTiming = PlayerLoopTiming.Update, IEqualityComparer<U> equalityComparer = null) where T : class
|
||||
=> UniTask.WaitUntilValueChanged(target, monitorFunction, monitorTiming, equalityComparer, cancellationToken);
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 575e59b0bea934ea78e29bdf5d663368
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Loading…
Reference in New Issue