2011-04-30 6 views
0

SQL Server 2008에서 내 데이터베이스의 테이블 반환 함수를 WCF 서비스에서 호출하고 결과를 LinkedList에 저장하려고합니다. 반대쪽에서이 서비스를 호출하고이 LinkedList를 가져 오면 모든 노드에 동일한 값이 포함됩니다. 내가 사용하고 코드는 다음과 같다 : onlineRetrieved에서(Silverlight) LinkedList를 반환하는 WCF 서비스

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 us in e.Result) 
    this.dispatcher.BeginInvoke(() => MessageBox.show(us.name+"\n"+us.email)); 
} 

답변

0

는 사용자를 보유하고를 사용하는 로컬 VAR를 사용하는 foreach 루프의 코드를 변경합니다. 즉

foreach(user us in e.Result) 
    this.dispatcher.BeginInvoke(() => MessageBox.show(us.name+"\n"+us.email)); 

foreach(user us in e.Result) 
{ 
user currentUser = us; 
    this.dispatcher.BeginInvoke(() => MessageBox.show(currentUser.name+"\n"+currentUser.email)); 
} 

하려면 그것은 소위 이유 이것을 참조 변경 Problem with anonymouse delegate within foreach

관련 문제