两个以下方法之间的主要区别是什么:ThreadPool.QueueUserWorkItem和Parallel.ForEach之间的区别?
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);
});
我是新来的多线程,并且想知道每种情况下会发生什么(就执行过程而言)什么是多线程,线程的每种方法?帮助我可视化两个过程。
SendFilesToClient:从数据库获取的数据,转换为Excel和Excel文件发送到相应的客户端。
谢谢!
感谢您的详细解释@Reed。两个问题:1)为什么block很重要(如果你可以回答我的代码,这会很好)? 2)进一步扩展主要问题,使用PLINQ比使用Parallel.ForEach有什么好处? – Learner 2013-02-27 21:43:24
@Mhirir 1)阻塞是不同的。您正在运行的线程将在运行下一行代码之前等待Parallel.ForEach完成,但foreach/TP.QUWI代码不会等待。 2)没有优势,除了可能更简单的代码了解 – 2013-02-27 21:59:02
伟大的,再次感谢解释! – Learner 2013-02-27 22:02:11