A Coder's Blog
A simple example of sending multiple requests (in parallel) to a web service, using WCF client and Task class.
List<Request> requests = new List<Request>(); //represents the batch size of requests sent in parallel int degreeOfParallelism = 3; using (var client = HttpClientFactory.Create()) { client.Open(); int i = 0; while (i < requests.Count) { //list of task to be run in parallel var tasks = new List<Task<Response>>(); for(int y = 0; i < degreeOfParallelism; y++){ int position = i + y; if (position >= requests.Count) break; //adding task to task list tasks.Add(new Task<Response>(() => { return client.Send(requests[position]); })); } //starting all tasks tasks.ForEach(x => x.Start()); //waiting all tasks to be completed Task.WaitAll(tasks.ToArray()); //collecting/printing the responses received tasks.ForEach(x => Console.WriteLine(x.Result)); i += degreeOfParallelism; } }