public PingPanelViewModel()
        {
            StartPing = ReactiveCommand.CreateFromObservable(() =>
            {
                PingResults.Clear();
                return(PingHost(_hostName).TakeUntil(StopPing));
            });

            StopPing = ReactiveCommand.Create(() => Unit.Default);

            _mostRecentPingResult = Observable.Merge(
                _pingResults.ItemsAdded,
                StopPing.Select(_ => ""),
                this.WhenAnyValue(vm => vm.HostName).WhereNotNull().Select(_ => ""))
                                    .ToProperty(this, vm => vm.MostRecentPingResult);

            this.WhenActivated(disposables =>
            {
                StartPing
                .Do(pingMessage => PingResults.Insert(0, pingMessage))
                .Subscribe()
                .DisposeWith(disposables);

                this
                .WhenAnyValue(vm => vm.IsPinging)
                .Where(false)
                .Subscribe(_ => IsShowingPingResultDetails = false)
                .DisposeWith(disposables);

                Observable.Merge <(string Title, string Message)>(
                    StartPing.ThrownExceptions.Select(ex => (("Could not start pinging", ex.Message))),
                    StopPing.ThrownExceptions.Select(ex => (("Could not stop pinging", ex.Message))))
                .SelectMany(dialogContent => _messages.Handle(new MessageInfo(MessageType.Error, dialogContent.Message, dialogContent.Title)))
                .Subscribe()
                .DisposeWith(disposables);
            });
        }
Exemple #2
0
 public PingMessage Handle(StartPing start)
 {
     Console.WriteLine("Starting ping pong");
     return new PingMessage();
 }
 public PingMessage Handle(StartPing start)
 {
     Console.WriteLine("Starting ping pong");
     return(new PingMessage());
 }