可能重复:
是否可以在 C# 中订阅事件订阅?
搜索有关事件事件的信息并不容易。我只是希望这不是因为它无法完成。我只是希望答案是“有一个事件”或其他方式。
我正在处理一个监听事件相对昂贵的事件。(必须将手表放在我正在绑定的另一个系统中,包括跟踪要跟踪的内容和 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
,但我希望它可以用事件模型的完整优雅来完成。