Question: In my coding, i have 4 tasks.
Task A
Task B
Task C
Task D

Task D need to be executed after finish of Task A ,B &C
Task A , Task B ,Task C are Independence and can execute at the same time 

i am now using a sequence approach to perform the action, it take very slow 

```
await Task A;
await Task B;
await Task C;
await Task D;

```

I would like to know if i can make it run concurrently and After finished Task A,B,C ,it will run Task D

Thanks for your help .

Answer: 
```
await Task.WhenAll(new Task[]{Task A, Task B, Task C})
await Task D

```
How about using Thread?

```
List<Thread> tmpThread = new List<Thread>();
tmpThread.Add(new Thread(new ThreadStart(A));
tmpThread.Add(new Thread(new ThreadStart(B));
tmpThread.Add(new Thread(new ThreadStart(C));
tmpThread.Add(new Thread(new ThreadStart(D));

tmpThread[0].Start();
tmpThread[1].Start();
tmpThread[2].Start();
tmpThread[3].Start();

```