嘗試通過異步調用從Web服務請求數據。循環 - 使用異步事件
開始了一個類似的Wait until event has finished後,在這種情況下,我能夠使用None-Async方法。現在情況並非如此。目前的Web服務沒有None-Async方法。那麼,我將如何開始並確定在事件「RespService_Send_Completed」中事件是否在啓動/繼續循環中的下一行之前完成。如果事件成功,則來自webservice的返回是「e.Result」中的UUID。調用方法
public void InvokeSend(string[] uuid)
在串[] 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);
}
}