2009-03-09 7 views
0

以下のコードでは、Listオブジェクトを持っています。それぞれを繰り返し、各Itemオブジェクトのプロパティの1つに値を割り当てる必要があります。値を取得するには、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

MyClientクラスのインスタンスをasyncメソッド呼び出しのuserstateとして渡すことができます。

この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; 
} 

 
を見てみましょう
関連する問題