예제 #1
0
        static AsyncSubject<TSource> RunAsync<TSource>(IConnectableObservable<TSource> source, CancellationToken cancellationToken)
        {
            var s = new AsyncSubject<TSource>();

            if (cancellationToken.IsCancellationRequested)
            {
                return Cancel(s, cancellationToken);
            }

            var d = source.Subscribe(s);
            var c = source.Connect();

            if (cancellationToken.CanBeCanceled)
            {
                RegisterCancelation(s, StableCompositeDisposable.Create(d, c), cancellationToken);
            }

            return s;
        }
예제 #2
0
 // for uGUI(from 4.6)
 /// <summary>
 /// Bind ReactiveCommand to button's interactable and onClick.
 /// </summary>
 public static IDisposable BindTo(this IReactiveCommand<Unit> command, UnityEngine.UI.Button button)
 {
     var d1 = command.CanExecute.SubscribeToInteractable(button);
     var d2 = button.OnClickAsObservable().SubscribeWithState(command, (x, c) => c.Execute(x));
     return StableCompositeDisposable.Create(d1, d2);
 }