示例#1
0
 public void OnError(Exception error)
 {
     try
     {
         promise.TrySetException(error);
     }
     finally
     {
         registration.Dispose();
         disposable.Dispose();
     }
 }
示例#2
0
        public static UniTask <T> FromCanceled <T>(CancellationToken token)
        {
            var promise = new UniTaskCompletionSource <T>();

            promise.TrySetException(new OperationCanceledException(token));
            return(new UniTask <T>(promise));
        }
示例#3
0
        public static UniTask <T> FromException <T>(Exception ex)
        {
            var promise = new UniTaskCompletionSource <T>();

            promise.TrySetException(ex);
            return(new UniTask <T>(promise));
        }
示例#4
0
        public static UniTask FromException(Exception ex)
        {
            var promise = new UniTaskCompletionSource <AsyncUnit>();

            promise.TrySetException(ex);
            return(new UniTask(promise));
        }
 public static UniTask FromCanceled(CancellationToken token)
 {
     var promise = new UniTaskCompletionSource<AsyncUnit>();
     promise.TrySetException(new OperationCanceledException(token));
     promise.MarkHandled();
     return new UniTask(promise);
 }
示例#6
0
        public static UniTask <T> ToUniTask <T>(this IObservable <T> source, CancellationToken cancellationToken = default(CancellationToken), bool useFirstValue = false)
        {
            var promise    = new UniTaskCompletionSource <T>();
            var disposable = new SingleAssignmentDisposable();

            var observer = useFirstValue
                ? (IObserver <T>) new FirstValueToUniTaskObserver <T>(promise, disposable, cancellationToken)
                : (IObserver <T>) new ToUniTaskObserver <T>(promise, disposable, cancellationToken);

            try
            {
                disposable.Disposable = source.Subscribe(observer);
            }
            catch (Exception ex)
            {
                promise.TrySetException(ex);
            }

            return(promise.Task);
        }