2017-05-30 76 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:它使用線程池的意義相似。其他一切都不一樣。 –