2011-12-21 86 views
0

我设计什么本质上是一个听者的PropertyChanged - 即当Instance.A改变,调用OnAChanged()错误处理使用无框架

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的属性。基于事件的IObrotebles从不OnError(因为没有“事件异常”之类的东西)。如果你有不同的来源,比如Observable.Start,你可以看到OnError。

+0

非常感谢您的帮助。我是否正确地拥有一堆FromEventPatterns,每个FromEventPatterns都会监听不同的属性更改?还是有更好的做法,我可以坚持?我基本上只是想实现观察者模式。 – user981225 2011-12-21 20:34:21

+0

你可以做到这一点,当然 - ReactiveUI使这变得更容易,但它是一个明确设计用于与Rx一起工作的MVVM框架 – 2011-12-21 21:36:49