是否可以使用。net Rx Observable。或者是否存在另一种方法,允许从事件创建一个可观察对象,但只在第一个Subscribe方法被调用时调用一次add事件处理程序,或者当FromEvent(或类似的方法)被调用时不调用remove event,而是允许手动删除事件。
我有一个特殊的情况。提供该事件的库只允许在该对象上的某个方法被调用之前添加一个或多个处理程序。之后,尝试添加另一个处理程序将引发异常。因此,我似乎不能使用FromEvent,因为生成的Observable在每次调用Subscribe时添加和删除事件处理程序,然后取消订阅Observer。
在这种情况下,最好的方法是什么?使用Publish
方法获取IConnectableObservable<T>
你想订阅多少次就订阅多少次。事件的底层订阅永远只有一个,订阅和取消订阅这个可观察对象不会对底层订阅产生任何影响。
IConnectableObservable<T> connectableObservable = Observable.FromEvent(…).Publish();
在调用Connect
之前,该事件将被忽略。
IDisposable connection = connectableObservable.Connect();
当connection
处于活动状态时,当事件触发时,所有可观察对象的订阅者都将收到通知。要取消订阅底层事件,Dispose
和connection
.
connection.Dispose();
现在事件将再次被忽略