我有一个模型类,其中包含我从其他类订阅的事件.我想在每个类中正确订阅和取消订阅.
其次除了MyClass之外还有其他类使用OnMyEvent,因此我不想无意中取消订阅该类中的事件.
MyClass(IModel model)
{
_model = model;
_model.OnMyEvent +=EventHandle;
}
Close()
{
_model.OnMyEvent -=EventHandle;
}
Disconnect()
{
//I want to check if OnMyEvent has already unsibscribed
//Moreover OnMyEvent is used in other classes and
//I don't want to mess up with it here
_model.OnMyEvent -=EventHandle;
}
Run Code Online (Sandbox Code Playgroud)Mar*_*ell 11
如果你只认购一次,没关系如何你很多次取消-取消订阅,当你没有订阅是无操作.同样,事件API的重点是您不能意外取消订阅其他订阅(其他类型或相同类型的其他实例).
因此,显示的代码应该没问题,尽管将两个调用移动到处理此问题的单个方法可能是值得的.但这可能是矫枉过正的.
此外,如果您的类型是IDisposable,请确保它也在该代码路径中被调用(可能是通过调用Close()).
| 归档时间: |
|
| 查看次数: |
423 次 |
| 最近记录: |