【发布时间】:2014-05-08 07:49:55
【问题描述】:
我对以这种方式编程有点陌生 - 有没有一种我可以解决的方法或使用事件和处理程序的推荐做法?
例如:
class objectA
{
public List<Handler> handlers;
...
public onActionHappened
{
foreach(Handler h in handlers)
{
raiseEvent(this, eventArgs);
}
}
...
public void DeleteThis()
{
handlers = null
}
}
raiseEvent() 将继续调用其他一些方法,其中之一将调用 DeleteThis()。当一切结束,程序流程返回foreach循环的“}”处的raiseEvent()时,发现handler已被修改=null,从而抛出InvalidOperationException的错误。
某些方法处理应该禁用此 objectA 作为功能的一部分 - 因此 Deletethis() 可能会在某些时候被客户端代码调用。为了解决这个问题,我已经从 List 处理程序修改为只有一个 Handler 对象,但我觉得这应该是一种更好的解决方法。或者更好的编码方式。
有什么建议吗?提前致谢!
【问题讨论】:
标签: c# event-handling invalidoperationexception