public void TestAttachAndDetach2() { var h = new EventHost (); Assert.IsFalse (h.HasMyEvent, "#1"); string value = null; // FromEvent<TDelegate,TEventArgs> (Func<Action<TEventArgs>, TDelegate> conversion, Func<TDelegate> addHandler, Func<TDelegate> removeHandler) var source = Observable.FromEvent<MyEventHandler, MyEventArgs> ( eh => new MyEventHandler (s => eh (new MyEventArgs (s))), ev => h.MyEvent += ev, ev => h.MyEvent -= ev); Assert.IsFalse (h.HasMyEvent, "#2"); // not subscribed yet var dis = source.Subscribe (v => value = v.Value); Assert.IsTrue (h.HasMyEvent, "#3"); h.FireMyEvent ("foo"); Assert.AreEqual ("foo", value, "#4"); dis.Dispose (); // unsubscribe event handler Assert.IsFalse (h.HasMyEvent, "#6"); }
public void TestAttachAndDetach2() { var h = new EventHost(); Assert.IsFalse(h.HasMyEvent, "#1"); string value = null; // FromEvent<TDelegate,TEventArgs> (Func<Action<TEventArgs>, TDelegate> conversion, Func<TDelegate> addHandler, Func<TDelegate> removeHandler) var source = Observable.FromEvent <MyEventHandler, MyEventArgs> ( eh => new MyEventHandler(s => eh(new MyEventArgs(s))), ev => h.MyEvent += ev, ev => h.MyEvent -= ev); Assert.IsFalse(h.HasMyEvent, "#2"); // not subscribed yet var dis = source.Subscribe(v => value = v.Value); Assert.IsTrue(h.HasMyEvent, "#3"); h.FireMyEvent("foo"); Assert.AreEqual("foo", value, "#4"); dis.Dispose(); // unsubscribe event handler Assert.IsFalse(h.HasMyEvent, "#6"); }