wcf - prevent MVVM ServiceAgent event hooking up multiple times -


developing silverlight application communication wcf service.

mvvm -> serviceagent -> wcf service

so in viewmodel have:

serviceagent.searchexternalpatients(name, (s, e) =>              {                  externalpatients = e.result;                                 }); 

in service agent have:

public void searchexternalpatients(string name, eventhandler<searchpatientexternalcompletedeventargs> callback)     {                                   _proxy.searchpatientexternalcompleted += callback;         _proxy.searchpatientexternalasync(name);     } 

the problem each time click on search button hooks event again, , when result receive several times.

what best way unhook these events in mvvm serviceagent pattern?

do way:

public void searchexternalpatients(string name, eventhandler<searchpatientexternalcompletedeventargs> callback) {     eventhandler<searchpatientexternalcompletedeventargs> wrapper = null;     wrapper = (s, e) =>     {         callback(s, e);         _proxy.searchpatientexternalcompleted -= wrapper;     }                               _proxy.searchpatientexternalcompleted += wrapper;     _proxy.searchpatientexternalasync(name); } 

you may warning compiler or resharper or visual studio's static code analysis (depending on settings each) because lambda accessing variable modified outside lambda, should work correctly. though don't see why factor code way in first place.


Comments

Popular posts from this blog

c# - how to write client side events functions for the combobox items -

exception - Python, pyPdf OCR error: pyPdf.utils.PdfReadError: EOF marker not found -