![](/img/trans.png)
[英]How to convert a function written using Rx Observable.FromEventPattern for event handlers to a pure .net event handler(without Rx)
[英]How do you register/unregister handlers to the event used in Observable.FromEventPattern?
我从Observable.FromEventPattern获取一个IObservable,如下所示:
SomeObject target = new SomeObject();
string eventName = "SomeEvent";
IObservable<T> obs = Observable.FromEventPattern<T>(target, eventName);
据我了解,FromEventPattern调用将自动为我生成添加/删除事件处理程序。 但是何时真正添加/删除处理程序?
我假定在订阅IObservable时添加了处理程序。 处置订户后,处理程序还会自动注销吗?
自己编写一个简单的测试就很容易了,只需简单地提供自己的引起副作用的处理程序,就可以Observable
在何时使用添加/删除处理程序:
var observable = Observable.FromEvent(
action => Console.WriteLine("Added"),
action => Console.WriteLine("removed"));
Console.WriteLine("Subscribing");
var subscription = observable.Subscribe(unit => { });
Console.WriteLine("disposing");
subscription.Dispose();
Console.WriteLine("done");
打印输出:
Subscribing Added disposing removed done
告诉我们,订阅将调用添加处理程序,而处理预订对象将删除处理程序。
如果您对可观察对象有多个订阅,那么只要您订阅没有先前订阅的可观察对象,就会在任何时候添加处理程序,并且仅当处理程序是最后剩余的订阅者时,处置订阅才会删除该处理程序。 通过修改测试以创建多个订阅,然后将其全部处理,可以看出这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.