WaitAll 和 WhenAll 之间有什么区别? [复制]

2024-01-11

我有这个代码:

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(使用前将#替换为@)

WaitAll 和 WhenAll 之间有什么区别? [复制] 的相关文章

随机推荐