非同期呼び出しによるWebサービスからのデータ要求を試みています。ループ - 非同期イベント付き
投稿が同様のWait until event has finished投稿を開始しました。この場合、私はNone-Asyncメソッドを使用できました。これは今の場合ではありません。現在のWebサービスでは、None-Asyncメソッドは使用できません。だから、私は頭を下ろして、イベント "RespService_Send_Completed"からのイベントが、ループの次の行で開始/移動する前に終了したかどうかを判断します。イベントが成功すると、Webサービスからの戻り値は "e.Result"のUUIDになります。文字列[] UUID内の1つの値を持つメソッド
public void InvokeSend(string[] uuid)
を呼び出すときに
foreach (string id in uuid)
{
WebRef.ResponderService RespService = new WebRef.ResponderService();
_uuid = id;
RespService.SendDataAsync(id);
RespService.SendCompleted += RespService_Send_Completed;
}
コードが正常に動作します。しかし、配列に複数の要素が含まれていると、コードは失敗します。
public class SendReciveSoapData
{
private string _uuid { get; set; }
public void InvokeSend(string[] uuid)
{
foreach (string id in uuid)
{
WebRef.ResponderService RespService = new WebRef.ResponderService();
_uuid =id;
RespService.SendDataAsync(id);
RespService.SendCompleted += RespService_Send_Completed;
}
}
void RespService_Send_Completed(object sender, WebRef.CompletedEventArgs e)
{
//Saving Response Data to database
string SuccessID = e.Result;
string TransactionID = _uuid;
DataBase db = new DataBase();
db.UpdateResponseID(SuccessID, TransactionID);
}
}