I have a result list of length N. I have a URL list of N URLs. I need to perform below operation.
List<Result> results=new List<Result>; //Urls is a list of URLs. public void FillResults() { foreach( var urlx in Urls) { GetResponse(urlx, (response) => { if (response != null && response.StatusCode==200) { Result result=new Result; result=response.SomeValue; result.url=urlx;------>It is important that SomeValue corresponds to urlx and not other say,urly results.Add(result); } }); } } //wait till List results is completely filled private void GetResponse(Uri uri, Action<MyResponse> callback) { using(var m_webClient = new WebClient()) { m_webClient.OpenReadCompleted += (o, a) => { if (callback != null) { DataContractJsonSerializer ser = new DataContractJsonSerializer(MyResponse)); callback(ser.ReadObject(a.Result) MyResponse); } }; m_webClient.OpenReadAsync(uri); } } public class MyResponse:Response { }
// Wait for the results list to be filled completely
I want every request to happen asynchronously which is happening but want to wait untill results list is completely filled to move forward.