void Authorize(object sender, RoutedEventArgs e) { var authorizer = new Authorizer(); authorizer.Request() .Subscribe(x => Process.Start(x)); var window = new AuthorizeWindow(); if (window.ShowDialog() == true) { authorizer.Authorize(window.PinCode) .SelectMany(_ => Twitter.UserName()) .Do(x => Setting.Name = x) .Do(_ => Twitter.ReAuthorize()) .Subscribe(x => Dispatcher.Invoke(() => viewModel.Authorize(x))); } }