据我所知,建议为自定义事件添加/删除方法设置锁。此外,当C#编译事件时,它指的是内部创建的delagate字段。我需要使用not event而不是私有委托和公共Add / Remove方法,在这种情况下我是否也应该使用锁,如下面的代码所示?
na.rm = TRUE
评论后的UPD:为什么我仍然需要(或者我不是?)使用锁定以下实现,其中我使用自定义事件的添加/删除但委托变量而不是事件变量:
private EventHandler _delegate;
public void Add(EventHandler e)
{
lock(_locker)
{
_delegate += e;
}
}
public void Remove(EventHandler e)
{
lock(_locker)
{
_delegate -= e;
}
}
UPD2:我不认为这是重复的问题,因为我没有问过标准的obj.myEvent + = onMyEventHandler线程安全(这是答案),而是关于添加/删除事件的访问器和关于自定义Add(),Remove()方法