 <p>What you are doing here is creating an anonymous method that calls each service in turn and then executes that method in a parallel task. What you need is a task array.</p> <pre><code>List&lt;Task&gt; taskList = new List&lt;Task&gt;(); Task task1= Task.Factory.StartNew(() =&gt; var List1 = client1.GetList1();); Task task2= Task.Factory.StartNew(() =&gt; var List2 = client1.GetList2();); // and so forth taskList.Add(task1); taskList.Add(task2); Task.WaitAll(taskList.ToArray()); </code></pre>