イベントを null に設定すると、すべてのターゲットが効果的に切り離されますか?
public class Test
{
public delegate void SomethingHappenedEventHandler(Test obj);
public event SomethingHappenedEventHandler SomethingHappened;
private void OnSomethingHappened()
{
if (this.SomethingHappened != null)
this.SomethingHappened(this);
//Once this event is fired, do not allow any more invocations!
this.SomethingHappened = null;
}
}
すべてのイベントを手動でデタッチする代わりに:
public class Thing
{
priavte Test Testing { get; set; }
public Thing()
{
this.Testing = new Test();
this.Testing.SomethingHappened += DoSomething;
}
private void DoSomething(Test obj)
{
//Do some stuff.
//Detach manually.
this.Testing.SomethingHappened -= DoSomething;
}
}