Получение данных из асинхронных методов WCF внутри цикла foreach - PullRequest
0 голосов
/ 09 марта 2009

В приведенном ниже коде у меня есть объект List. Я хочу перебрать каждый из них и назначить значение одному из свойств каждого объекта Item. Чтобы получить значение, мне нужно вызвать асинхронный метод службы WCF.

Когда завершится вызов моей службы WCF, как мне взять эти данные и назначить их текущему экземпляру (i) в itemsList? Есть ли способ получить доступ к i из моего события xxxCompleted?

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  ???
}

1 Ответ

3 голосов
/ 09 марта 2009

Вы можете передать экземпляр класса MyClient как пользовательское состояние при вызове асинхронного метода.

Взгляните на эту ссылку


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

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

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


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...