2011-12-21 3 views
0

Я разработал то, что по существу PropertyChanged слушателя - то есть, когда Instance.A изменения, вызовите OnAChanged()Обработка ошибок с помощью Реактивная Framework

Observable.FromEventPattern<PropertyChangedEventArgs>(Instance,"PropertyChanged") 
      .Where(e => e.EventArgs.PropertyName == "A") 
      .ObserveOn(Scheduler.ThreadPool) 
      .Subscribe(search => 
       OnAChanged((PropertyChangedEventArgsEx)search.EventArgs), s => 
        OnError(s)); 

Это работает совершенно нормально (без s => OnError(s) части).

Однако я хотел протестировать обработку исключений. Я изменил метод OnAChanged(), чтобы просто выбросить новое исключение. Однако исключение выбрасывается, и OnError никогда не вызывается, и мое приложение выходит из строя. Я не понимаю использование OnError?

ответ

1

Вы ошибаетесь OnError - OnError является свойством IObservable. На основе событий IObservables никогда не OnError (потому что нет такой вещи, как «Событие Исключение» или что-то еще). Если у вас есть другой источник, например Observable.Start, вы можете увидеть OnError.

+0

Большое спасибо за помощь. Исправляюсь ли я в том, что у меня есть куча FromEventPatterns, каждый из которых слушает другое изменение свойства? Или есть лучшая практика, к которой я могу присоединиться? Я просто пытаюсь реализовать шаблон наблюдателя. – user981225

+0

Вы можете сделать это, конечно - ReactiveUI делает это намного проще, но это MVVM-структура, явно предназначенная для работы вместе с Rx –