![]() |
1
3
我会说使用简单的委托;很简单-就是这样
已经
另外,如果你正在做
对此,考虑一下
第一个示例更接近于“标准”事件(尽管您可能希望在调用
编辑 同时也发生了 功能性
|
![]() |
2
0
使用MulticastDelegate来保存订阅事件的列表当然是一种可行的方法,但不是我特别喜欢的方法。要从MulticastDelegate中添加或删除事件,必须执行以下两项操作之一:
如果没有争用,后一种方法可能提供稍好的性能,但是如果许多线程同时尝试添加或删除事件,则性能可能会很差。不过,后一种方法的一个优点是,在持有锁时不会有线程死机的危险。 这两种方法似乎都不是特别干净。如果计划通过简单地调用委托来调用所有事件,那么事件调用性能可能会抵消add/remove性能。另一方面,如果计划使用GetInvocationList以便将事件调用包装在try/catch块中,则最好只使用(适当锁定的)列表或其他此类数据结构。 |
![]() |
franzlorenzon · sock.js上的支持活动 11 年前 |