Browse Source

ModelCollectionEvent: allow removing event handlers from within an event handler

pull/59/merge
Daniel Grunwald 12 years ago
parent
commit
dbac7687dc
  1. 9
      src/Main/Base/Project/Dom/IModelCollection.cs

9
src/Main/Base/Project/Dom/IModelCollection.cs

@ -21,7 +21,8 @@ namespace ICSharpCode.SharpDevelop.Dom
public void AddHandler(ModelCollectionChangedEventHandler<T> handler) public void AddHandler(ModelCollectionChangedEventHandler<T> handler)
{ {
_handlers.Add(handler); if (handler != null)
_handlers.Add(handler);
} }
public void RemoveHandler(ModelCollectionChangedEventHandler<T> handler) public void RemoveHandler(ModelCollectionChangedEventHandler<T> handler)
@ -31,10 +32,8 @@ namespace ICSharpCode.SharpDevelop.Dom
public void Fire(IReadOnlyCollection<T> removedItems, IReadOnlyCollection<T> addedItems) public void Fire(IReadOnlyCollection<T> removedItems, IReadOnlyCollection<T> addedItems)
{ {
foreach (var handler in _handlers) { foreach (var handler in _handlers.ToArray()) {
if (handler != null) { handler(removedItems, addedItems);
handler(removedItems, addedItems);
}
} }
} }

Loading…
Cancel
Save