我经常看到像这样的代码,在此处显示,即分配一个对象,然后将其用作“锁对象”。
我认为你可以使用任何对象来实现这个功能,包括事件本身作为锁对象。为什么要分配一个没有作用的新对象?我的理解是,在对象上调用lock()并不会实际改变对象本身,也不会实际锁定它以防止使用,它只是作为多个锁语句的占位符。
我认为你可以使用任何对象来实现这个功能,包括事件本身作为锁对象。为什么要分配一个没有作用的新对象?我的理解是,在对象上调用lock()并不会实际改变对象本身,也不会实际锁定它以防止使用,它只是作为多个锁语句的占位符。
public class Shape : IDrawingObject, IShape
{
// Create an event for each interface event
event EventHandler PreDrawEvent;
event EventHandler PostDrawEvent;
object objectLock = new Object();
// Explicit interface implementation required.
// Associate IDrawingObject's event with
// PreDrawEvent
event EventHandler IDrawingObject.OnDraw
{
add
{
lock (objectLock)
{
PreDrawEvent += value;
}
}
remove
{
lock (objectLock)
{
PreDrawEvent -= value;
}
}
}
}
所以我的问题是,这真的是一个好主意吗?
event EventHandler IFoo.Bar;
不行,它不能工作。 - Marc Gravell