2017-05-30 64 views
0

任何人都可以请解释下面两段C#代码的区别吗?不同的执行任务的方式

var tasks = new List<Task<CustomTaskResult>>(); 
tasks.Add(Task.Run(() => AsyncMethod1()); 
tasks.Add(Task.Run(() => AsyncMethod2()); 
tasks.Add(Task.Run(() => AsyncMethod3()); 
tasks.Add(Task.Run(() => AsyncMethod4()); 
await Task.WhenAll(tasks); 

var tasks = new List<Task<CustomTaskResult>>(); 
tasks.Add(AsyncMethod1()); 
tasks.Add(AsyncMethod2()); 
tasks.Add(AsyncMethod3()); 
tasks.Add(AsyncMethod4()); 
await Task.WhenAll(tasks); 

您的帮助,将不胜感激。

+1

第一个使用线程和第二个返回任务对象的异步函数 – Rahul

回答

1

第一个将四个方法执行排入线程池,然后异步等待它们全部完成。

第二个在当前线程上启动四个方法执行,然后异步等待它们全部完成。

+0

那么这是否意味着第一个类似于'Parallel.ForEach'? – Jaya

+1

@Jaya:它使用线程池的意义相似。其他一切都不一样。 –