using System.Threading.Tasks;
using System.Collections.Generic;
public static void Main()
var allTask = new List<Task<int>> { task1, task2, task3 };
Parallel.ForEach(allTask, async (task) =>
Console.WriteLine("task 1 finished");
Console.WriteLine("task 2 finished");
Console.WriteLine("task 3 finished");
static async Task<int> Task1(int delay)
static async Task<int> Task2(int delay)
static async Task<int> Task3(int delay)