c# - Is there a MemoryLeak? -
c# - Is there a MemoryLeak? -
i load list of liefitems.
list<liefitem> list = this.loadliefitems();
liefitem implementing inotifypropertychanged on way:
public event propertychangedeventhandler propertychanged; [notifypropertychangedinvocator] protected virtual void onpropertychanged(string propertyname) { propertychangedeventhandler handler = propertychanged; if (handler != null) { handler(this, new propertychangedeventargs(propertyname)); } }
after loading list, subscribing propertychanged:
foreach(var item in list) { item.propertychanged += itemonpropertychanged; }
after, list used itemssource of datagrid.
i asking me now, if load list sec time , set new list itemssource of datagrid, first loaded items removed memory or have memoryleak because subscribing propertychanged , don't unsubscribe?
no memory leak there.
c# events implement subject-observer pattern underneath.
when event raised, happens underneath phone call fellow member method of object registered event.
so, if like:
item.propertychanged += itemonpropertychanged;
this equivalent to:
item.propertychanged += this.itemonpropertychanged;
and when event triggered, there's invocation of method:
registeredobject.itemonpropertychanged(propertyname);
this means reference stored object registered event. not object raises event.
c# wpf memory-leaks datagrid
Comments
Post a Comment