我有这个代码:
List<ComponentesClasificaciones> misClasificaciones = new List<ComponentesClasificaciones>();
Task tskClasificaciones = Task.Run(() =>
{
misClasificaciones = VariablesGlobales.Repositorio.buscarComponentesClasificacionesTodosAsync().Result;
});
Task.WhenAll(tskClasificaciones);
List<ComponentesClasificaciones> misVClasificacionesParaEstructuras = new List<ComponentesClasificaciones>(misClasificaciones);
如果我使用Task.WhenAll
, misClasificaciones
没有任何元素,但是当我使用 awit all 时,我得到了我向数据库请求的所有元素。
何时使用WhenAll
以及何时使用WaitAll
?
MSDN 对此做了很好的解释。差异非常明显。
任务.WhenAll http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.whenall(v=vs.110).aspx:
创建一个任务,该任务将在所有提供的任务完成后完成。
任务.WaitAll http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.waitall(v=vs.110).aspx:
等待所有提供的 Task 对象完成执行。
所以,本质上,WhenAll
给你一个任务,直到你给它的所有任务都完成后才完成(并允许程序立即继续执行),而WaitAll
只是阻塞并等待您传递的所有任务完成。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)