i've been reading this msdn article , this question try understand events in .net. unfortunately, not clicking me , i'm having lot of trouble. i'm trying integrate technique project, little success.
basically, i've got class read numbers. whenever encounters new number, want fire event called numberchanged.
so, set event public event eventhandler numberchanged;. later on, fire event when encounters number isn't same previous one.
if(currentnumber != previousnumber){ if(numberchanged != null){ numberchanged(this, new eventargs()); } } but i'm having trouble 'subscibing' event. if numberchanged += [something here] errors saying numberchanged event , not type.
is explanation clear enough advice offered? many thanks.
there number of ways handle it, basic create function:
public void mynumberchangedhandler(object sender, eventargs e) { //your code goes here gets called when number changes } you subscribe (one time only, in constructor) going:
numberchanged += mynumberchangedhandler; or, can use called anonymous (lambda) method, assigned in constructor (typically):
numberchanged += (sender, e) => { //your code here handle number changed event }; to expand little bit, care must taken when using lambda approach since can create memory leaks , zombie objects. .net memory garbage collector mark-and-sweep system removes objects when no longer in use. post shows how hard remove lambda event handlers: how remove lambda event handler .
having active event handler can keep object alive even if has been disposed! here example of creating zombie object (doesn't run in fiddle can copy own console app) https://dotnetfiddle.net/efnpz5
prints out:
i'm still alive i'm still alive disposed! press key quit i'm still alive i'm still alive i'm still alive.
Comments
Post a Comment