イベント イベントに関する情報を検索するのは簡単ではありません。できないからではないことを願うばかりです。その答えが「そのためのイベントがある」または他の手段であることを願っています。
イベントのリッスンが比較的高価なイベントを扱っています。(私が結び付けている別のシステムでは、監視する必要があり、追跡するものと COM オーバーヘッドを追跡する必要があります。)
したがって、何かがそれを望んでいることがわかっていない限り、イベントを監視したくありません。
それを行う簡単な方法は次のとおりです。
public class MyThing
{
public delegate void MyEventHandler(object sender, MyEventArgs ea);
public event MyEventHandler Change;
public void StartWatching()
{
...
}
public void StopWatching()
{
...
}
}
これは次のように使用されます。
var thing = new MyThing();
thing.Change += this.thing_Change
thing.StartWatching();
thing.Change -= this.thing_Change
thing.StopWatching(); // Hopefully nothing else is watching...
しかし、これは私が望むほどエレガントではありません。に置き換えることでそれを行うことができthing.Change += x
、thing.StartWatching(x)
それから監視が開始され、逆に if がチェックChange == null
されますが、イベント モデルの完全な優雅さでそれを行うことができればと思います。