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); }); }
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()); }