2009-03-09 5 views
0

아래 코드에서 List 개체를 사용합니다. 각각을 반복하고 각 Item 객체의 속성 중 하나에 값을 할당하려고합니다. 값을 얻으려면 WCF 서비스의 비동기 메서드를 호출해야합니다.foreach 루프 내의 WCF 비동기 메서드에서 데이터 가져 오기

내 WCF 서비스 호출이 완료되면 해당 데이터를 가져 와서 itemsList의 현재 인스턴스 (i)에 어떻게 할당합니까? 내 xxxCompleted 이벤트에서 i에 액세스하는 방법이 있습니까?

private void SomeMethod() 
{ 
    List<Item> itemsList = GetItems(); 

    foreach(Item i in itemsList) 
    { 
     MyClient client = new MyClient(); 
     client.GetSomeValueCompleted += client_GetSomeValueCompleted; 
     client.GetSomeValueAsync(i.ID); 
    } 
} 

private void client_GetSomeValueCompleted(object sender, GetSomeValueEventArgs e) 
{ 
    int id = e.Result; 
    // how do I assign this ID to my itemsList object, i ??? 
} 

답변

3

async 메서드 호출에서 사용자 상태로 MyClient 클래스의 인스턴스를 전달할 수 있습니다.

하면이 link

 

private void SomeMethod() 
{  
    List itemsList = GetItems();  
    foreach(Item i in itemsList)  
    {   
     MyClient client = new MyClient();  
     client.GetSomeValueCompleted += client_GetSomeValueCompleted;  
     client.GetSomeValueAsync(i.ID, client); 
    } 
} 

private void client_GetSomeValueCompleted(object sender, GetSomeValueEventArgs e) 
{ 
    int id = e.Result; 

    // how do I assign this ID to my itemsList object, i ??? 
    (e.UserState as MyClient).ID = id; 
} 

 
에서보세요