Difference between ThreadPool.QueueUserWorkItem and Parallel.ForEach?
What is the main difference between two of following approaches: ThreadPool.QueueUserWorkItem Clients objClient = new Clients(); List<Clients> objClientList = Clients.GetClientList(); foreach (var list in objClientList) { ThreadPool.QueueUserWorkItem(new WaitCallback(SendFilesToClient), list); } System.Threading.Tasks.Parallel ForEach Clients objClient = new Clients(); List<Clients> objClientList = Clients.GetClientList(); Parallel.ForEach<Clients>(objClientList, list => { SendFilesToClient(list); }); I am new to multi-threading and want to know what's going to happen in each case (in terms of