i calling table-valued function, of database in sql server 2008, wcf service , storing results in linkedlist. on other side when call service , linkedlist, of nodes contains same value. code using follow:
public class user { public string name; public string email; } public class chatservice : ichatservice { public linkedlist<user> getonlinelist(string email) { linkedlist<user> online = new linkedlist<user>(); jabsbasedatacontext db = new jabsbasedatacontext(); iqueryable<onlinelistresult> justonline = db.onlinelist(email); foreach (onlinelistresult r in justonline) { user os = new user() { name = r.fname + " " + r.lname, email = r.email }; online.addlast(os); } return online; } } chatservice.getonlinelistcompleted += onlineretrieved; chatservice.getonlinelistasync(email); void onlineretrieved(object sender, getonlinelistcompletedeventargs e) { foreach(user in e.result) this.dispatcher.begininvoke(() => messagebox.show(us.name+"\n"+us.email)); }
in onlineretrieved, change code in foreach loop use local var hold user , use that. i.e. change
foreach(user in e.result) this.dispatcher.begininvoke(() => messagebox.show(us.name+"\n"+us.email));
to
foreach(user in e.result) { user currentuser = us; this.dispatcher.begininvoke(() => messagebox.show(currentuser.name+"\n"+currentuser.email)); }
refer why so- problem anonymouse delegate within foreach
Comments
Post a Comment