Beispiel #1
0
        private void startButton_Click(object sender, RoutedEventArgs e)
        {
            var id = count++;

            cancelable = new SingleAssignmentDisposable();

            (
                from _1 in Future.Start(() =>
            {
                Debug.WriteLine($"{id} Subscribed.");
                return(id);
            })
                from _2 in Future.Delay(TimeSpan.FromSeconds(1), TaskPoolScheduler.Default)
                select id
            )
            .Subscribe(value =>
            {
                if (cancelable.IsDisposed)
                {
                    Debug.WriteLine($"{id} Canceled.");
                    return;
                }
                Debug.WriteLine($"{id} Result = " + value);
            },
                       error =>
            {
                Debug.WriteLine($"{id} Error = " + error.Message);
            },
                       () =>
            {
                Debug.WriteLine($"{id} Completed.");
            });
        }