2011-12-21 84 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