public static UniTask ToUniTask(this AsyncOperationHandle handle, IProgress <float> progress = null, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellationToken = default(CancellationToken)) { if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled(cancellationToken)); } if (!handle.IsValid()) { // autoReleaseHandle:true handle is invalid(immediately internal handle == null) so return completed. return(UniTask.CompletedTask); } if (handle.IsDone) { if (handle.Status == AsyncOperationStatus.Failed) { return(UniTask.FromException(handle.OperationException)); } return(UniTask.CompletedTask); } return(new UniTask(AsyncOperationHandleConfiguredSource.Create(handle, timing, progress, cancellationToken, out var token), token)); }
public static UniTask <T> ToUniTask <T>(this AsyncOperationHandle <T> handle, IProgress <float> progress = null, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellationToken = default(CancellationToken)) { if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled <T>(cancellationToken)); } if (!handle.IsValid()) { throw new Exception("Attempting to use an invalid operation handle"); } if (handle.IsDone) { if (handle.Status == AsyncOperationStatus.Failed) { return(UniTask.FromException <T>(handle.OperationException)); } return(UniTask.FromResult(handle.Result)); } return(new UniTask <T>(AsyncOperationHandleConfiguredSource <T> .Create(handle, timing, progress, cancellationToken, out var token), token)); }
public static (UniTask, CancellationTokenRegistration) ToUniTask(this CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled(cancellationToken), default(CancellationTokenRegistration)); } var promise = new UniTaskCompletionSource(); return(promise.Task, cancellationToken.RegisterWithoutCaptureExecutionContext(cancellationTokenCallback, promise)); }
public static UniTask <UnityEngine.Object[]> AwaitForAllAssets(this AssetBundleRequest asyncOperation, CancellationToken cancellationToken) { Error.ThrowArgumentNullException(asyncOperation, nameof(asyncOperation)); if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled <UnityEngine.Object[]>(cancellationToken)); } if (asyncOperation.isDone) { return(UniTask.FromResult <UnityEngine.Object[]>(asyncOperation.allAssets)); } return(new UniTask <UnityEngine.Object[]>(AssetBundleRequestAllAssetsWithCancellationSource.Create(asyncOperation, cancellationToken, out var token), token)); }
public static UniTask <UnityEngine.Object[]> AwaitForAllAssets(this AssetBundleRequest asyncOperation, IProgress <float> progress = null, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellationToken = default(CancellationToken)) { Error.ThrowArgumentNullException(asyncOperation, nameof(asyncOperation)); if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled <UnityEngine.Object[]>(cancellationToken)); } if (asyncOperation.isDone) { return(UniTask.FromResult(asyncOperation.allAssets)); } return(new UniTask <UnityEngine.Object[]>(AssetBundleRequestAllAssetsConfiguredSource.Create(asyncOperation, timing, progress, cancellationToken, out var token), token)); }
public static UniTask ToUniTask(this AsyncOperation asyncOperation, IProgress <float> progress = null, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellationToken = default(CancellationToken)) { Error.ThrowArgumentNullException(asyncOperation, nameof(asyncOperation)); if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled(cancellationToken)); } if (asyncOperation.isDone) { return(UniTask.CompletedTask); } return(new UniTask(AsyncOperationConfiguredSource.Create(asyncOperation, timing, progress, cancellationToken, out var token), token)); }
public static UniTask <UnityEngine.Object> WithCancellation(this ResourceRequest asyncOperation, CancellationToken cancellationToken) { Error.ThrowArgumentNullException(asyncOperation, nameof(asyncOperation)); if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled <UnityEngine.Object>(cancellationToken)); } if (asyncOperation.isDone) { return(UniTask.FromResult(asyncOperation.asset)); } return(new UniTask <UnityEngine.Object>(ResourceRequestWithCancellationSource.Create(asyncOperation, cancellationToken, out var token), token)); }
public static UniTask WithCancellation(this AsyncOperation asyncOperation, CancellationToken cancellationToken) { Error.ThrowArgumentNullException(asyncOperation, nameof(asyncOperation)); if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled(cancellationToken)); } if (asyncOperation.isDone) { return(UniTask.CompletedTask); } return(new UniTask(AsyncOperationWithCancellationSource.Create(asyncOperation, cancellationToken, out var token), token)); }
public static UniTask <T> WithCancellation <T>(this AsyncOperationHandle <T> handle, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled <T>(cancellationToken)); } if (handle.IsDone) { if (handle.Status == AsyncOperationStatus.Failed) { return(UniTask.FromException <T>(handle.OperationException)); } return(UniTask.FromResult(handle.Result)); } return(new UniTask <T>(AsyncOperationHandleWithCancellationSource <T> .Create(handle, cancellationToken, out var token), token)); }
public static UniTask <UnityWebRequest> ToUniTask(this UnityWebRequestAsyncOperation asyncOperation, IProgress <float> progress = null, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellationToken = default(CancellationToken)) { Error.ThrowArgumentNullException(asyncOperation, nameof(asyncOperation)); if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled <UnityWebRequest>(cancellationToken)); } if (asyncOperation.isDone) { if (asyncOperation.webRequest.IsError()) { return(UniTask.FromException <UnityWebRequest>(new UnityWebRequestException(asyncOperation.webRequest))); } return(UniTask.FromResult(asyncOperation.webRequest)); } return(new UniTask <UnityWebRequest>(UnityWebRequestAsyncOperationConfiguredSource.Create(asyncOperation, timing, progress, cancellationToken, out var token), token)); }
public static UniTask ToUniTask(this AsyncOperationHandle handle, IProgress <float> progress = null, PlayerLoopTiming timing = PlayerLoopTiming.Update, CancellationToken cancellationToken = default(CancellationToken)) { if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled(cancellationToken)); } if (handle.IsDone) { if (handle.Status == AsyncOperationStatus.Failed) { return(UniTask.FromException(handle.OperationException)); } return(UniTask.CompletedTask); } return(new UniTask(AsyncOperationHandleConfiguredSource.Create(handle, timing, progress, cancellationToken, out var token), token)); }
public static UniTask WithCancellation(this AsyncOperationHandle handle, CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled(cancellationToken)); } if (handle.IsDone) { if (handle.Status == AsyncOperationStatus.Failed) { return(UniTask.FromException(handle.OperationException)); } return(UniTask.CompletedTask); } return(new UniTask(AsyncOperationHandleWithCancellationSource.Create(handle, cancellationToken, out var token), token)); }
public static UniTask <UnityWebRequest> WithCancellation(this UnityWebRequestAsyncOperation asyncOperation, CancellationToken cancellationToken) { Error.ThrowArgumentNullException(asyncOperation, nameof(asyncOperation)); if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled <UnityWebRequest>(cancellationToken)); } if (asyncOperation.isDone) { if (asyncOperation.webRequest.IsError()) { return(UniTask.FromException <UnityWebRequest>(new UnityWebRequestException(asyncOperation.webRequest))); } return(UniTask.FromResult(asyncOperation.webRequest)); } return(new UniTask <UnityWebRequest>(UnityWebRequestAsyncOperationWithCancellationSource.Create(asyncOperation, cancellationToken, out var token), token)); }
/// <summary> /// Ignore task result when cancel raised first. /// </summary> public static UniTask <T> WithCancellation <T>(this UniTask <T> task, CancellationToken cancellationToken) { if (!cancellationToken.CanBeCanceled) { return(task); } if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled <T>(cancellationToken)); } if (task.Status.IsCompleted()) { return(task); } return(new UniTask <T>(new WithCancellationSource <T>(task, cancellationToken), 0)); }
/// <summary> /// Ignore task result when cancel raised first. /// </summary> public static UniTask AttachExternalCancellation(this UniTask task, CancellationToken cancellationToken) { if (!cancellationToken.CanBeCanceled) { return(task); } if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled(cancellationToken)); } if (task.Status.IsCompleted()) { return(task); } return(new UniTask(new AttachExternalCancellationSource(task, cancellationToken), 0)); }
public override UniTask <bool> WaitToReadAsync(CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return(UniTask.FromCanceled <bool>(cancellationToken)); } lock (parent.items) { if (parent.items.Count != 0) { return(CompletedTasks.True); } if (parent.closed) { if (parent.completionError == null) { return(CompletedTasks.False); } else { return(UniTask.FromException <bool>(parent.completionError)); } } cancellationTokenRegistration.Dispose(); core.Reset(); isWaiting = true; this.cancellationToken = cancellationToken; if (this.cancellationToken.CanBeCanceled) { cancellationTokenRegistration = this.cancellationToken.RegisterWithoutCaptureExecutionContext(CancellationCallbackDelegate, this); } return(new UniTask <bool>(this, core.Version)); } }